The Real Business Cycle Model: A Step-by-Step Solution

Author
Affiliation

Vivaldo M. Mendes

Department of Economics, Instituto Universitário de Lisboa (ISCTE-IUL)

Published

April 20, 2026

Abstract

In this paper, we provide a step-by-step solution to the standard Real Business Cycle (RBC) model. It involves presenting the model in structural form, optimizing intertemporal utility, linearizing the solution around the steady state, checking the Blanchard-Kahn conditions, and simulating the model’s closed-form solution in a Pluto notebook using the Julia programming language. The fundamental goal of this document is to teach how to do this task, rather than to provide an easy, hand-made tool that solves the model using a computer package like a black box, without any relevant knowledge of the techniques required to solve and simulate this model.

Keywords

Real Business Cycles model, Linearization, Simulation

1 Introduction

The dominant model in macroeconomics until the late 1970s was what we now call the Old Keynesian model. This model was based on the main ideas from one of the most cited books in the world of economics, by Keynes (1936), and on two subsequent fundamental theoretical constructs — the IS and the LM curves — augmented by the Phillips curve with adaptive expectations.1 The IS/LM framework was firstly presented by Hicks (1937), the Phillips curve was later introduced by Phillips (1958), and the augmentation of the previous curve with adaptive expectations was made (more or less simultaneously) by Phelps (1967) and Friedman (1968).

The model was so dominant in the academic circles that, following an interview with Milton Friedman (the Nobel Prize winner in 1976) and other prominent economists, the Time magazine cover story of 1965 (on December 31, 1965) was titled “The Economy: We Are All Keynesians Now”. And in the world of politics, the situation was not much different. In an interview with ABC News anchor Howard K. Smith in January 4, 1971, the US President Richard Nixon declared to the nation that “I am now a Keynesian in economics”, while in his Annual Message to Congress on the State of the Union on January 22, he stated that “by spending as if we were at full employment, we will help to bring about full employment”. This resembled an astonishing political result, only logically explained by the tremendous success of Keynesian recipes since the end of the Second World War in the US and other Western economies.

The old Keynesian model dominated to such an extent that its internal inconsistencies and empirical flaws remained dormant for more than three decades. The model developed an internal inconsistency by using adaptive expectations: if private agents form expectations about crucial macroeconomic variables to avoid making mistakes, why do they adopt adaptive expectations that can lead to systematic mistakes? The model also suffered from an empirical flaw that Keynes acknowledged in 1937 but later ignored: it predicted that real wages would be counter-cyclical, whereas empirical evidence clearly suggests they are pro-cyclical.

In the early 1970s, Thomas Sargent and Robert Lucas wrote two papers that clearly exposed the two major limitations of the old dominant model, and by doing so, they launched a revolution in macroeconomics: Lucas (1972) and Sargent, Fand, and Goldfeld (1973). Their papers initially focused only on the criticisms of adaptive expectations in the old Keynesian model, but the jump to the empirical problem associated with real wages was immediate, and this task was completed in the late 1970s by Lucas (1995) and, in particular, by Fynn Kydland and Edward Prescott in Kydland and Prescott (1982). The impact was so brutal that by the end of the 1970s, the old Keynesian model had blown up in the academic world. The words of an old Keynesian academic in 1980, see Blinder (1988), show the extent of the intellectual earthquake in economics:

”By about 1980, it was hard to find an American academic macro- economist under the age of 40 who professed to be a Keynesian. It was an astonishing intellectual turnabout in less than a decade – an intellectual revolution for sure – the young were recruited disproportionately into the new classical ranks …. By 1980 or so, the adage ’there are no Keynesians under the age of 40’ was part of the folklore of the (American) economics profession” (1988, 278).

The Real Business Cycle model (henceforth, simply RBC) flows from this historical process. There are many variations of the model. However, when we refer to the RBC model, we generally mean its standard version, presented by Gary Hansen in 1985 (see Hansen (1985)). This model departs from the old Keynesian model on five fundamental aspects. First, it adopts rational rather than adaptive expectations. Second, it adopts optimal decision-making by private agents (also known as “microfoundations”) rather than ad hoc behavior in the model’s fundamental equations. Third, it views technological shocks as the main driver of economic fluctuations, rather than relying on public spending or interest rate shocks. Fourth, it addresses uncertainty arising from shocks seriously, given the rational expectations hypothesis, rather than assuming shocks will have only trending impacts. Fifth, it uses a computer to simulate a large, intricate model rather than solving simple models by hand.

The RBC, as a tool, represents a remarkable advancement in economic theory, introducing new techniques largely driven by the vision of Edward Prescott. Nevertheless, on the economic policy side, the model has proved to be very limited, with prescriptions that have clearly violated common economic wisdom and practice. For example, the advanced economic world is populated by central banks that are relevant, powerful, and independent. However, they are totally irrelevant for the RBC model. On another road, everybody knows that business cycles are a bad thing, and that high unemployment is a brutal economic and social burden. But they are not so for the RBC model. There are more results that are clearly at odds with the world we live in, but they cannot be discussed in the current document due to space constraints and to avoid losing the focus of our job here.

The rest of this document is organized as follows. In Section 2, we present the structural form of the standard model following Hansen (1985). Section 3 deals with the optimization of intertemporal utility by a responsible government. Section 4 presents the linearization of the model’s fundamental equations. In Section 5, we calculate the model’s steady state. Finally, in section 6, we simulate the model using a computer (we exemplify using a Pluto notebook and the Julia programming language). The last section provides some general final comments.

2 The model: structural form

In the standard RBC model there are only three fundamental agents: households, firms, and a government. For more recent developments and extensions see Mitman (2025).

2.1 Households

The economy is populated by a large number \(n_t\) of households, at period \(t\). They differ, but the consideration of heterogeneity on the household side is an extremely demanding technical issue in macroeconomics. For the sake of tractability at the level we are considering in this document, we must impose a widely held assumption: there is a representative household that fully represents the entire universe of these agents. This assumption, if taken with care, may prove extremely valuable; but when used in the wrong context, it may be very dangerous.

The representative household has basically to make two decisions over time: a decision involving how many hours of work versus hours of leisure; and a decision between consumption versus savings. The representative household (her) has no market power, and for this reason she maximizes her intertemporal utility taking into account that the prices of goods & services she buys, the real wage rate she receives by renting her labor services to firms, and the real interest rate she receives from investing her savings, are all taken as fully determined by competitive markets, outside of her direct intervention. Economists usually say that the representative household maximizes her utility, “taking prices, wage rates, and interest rates as given”.

To make this household problem easier to understand, it is better to use some mathematical expressions. The standard RBC model considers that household utility \((u)\) obeys the principle of additive preferences given by the Constant Relative Risk Aversion functions below: 2 \[u(c_t , \ell_t)=\frac{c_t^{1-\sigma}}{1-\sigma} - \theta \frac{\ell_{t}^{1+\gamma}}{1+\gamma} \qquad ,\qquad \left\{\sigma, \gamma, \theta \right\} \geq 0 \tag{1}\]

where \(\ell_{t}\) denotes time (hours) allocated to work, \(c_{t}\) is real consumption of goods & services, and \(\left\{\sigma, \gamma, \theta \right\}\) are parameters. The impact of consumption and hours supplied on utility is shown in Figure 1.

Figure 1: The CRRA utility functions on consumption and labor

Our representative household lives for a long time, and she wants to maximize her utility in every period. However, there is a problem because she has to compare utilities in different periods. There are two possibilities: (i) consuming a basket of goods today or consuming them in twenty years has exactly the same value for her today, or (ii) for the same basket of goods, that consumed in twenty years’ time has less value today than the one consumed today. The vast majority of modern macroeconomics follow the second approach, and we do the same here. 3

In the RBC model, intertemporal utility is discounted to the current period by a subjective factor \(\beta\), according to the following expression: \[u(_{0,T})=\overbrace{\beta^0 \cdot u\left(c_{0}, \ell_{0}\right)}^{\text {period } 0}+\overbrace{\beta^1 \cdot u\left(c_{1}, \ell_{1}\right)}^{\text {period } 1}+\overbrace{\beta^2 \cdot u\left(c_{2}, \ell_{2}\right)}^{\text {period } 2}+\ldots+\overbrace{\beta^T \cdot u\left(c_{T}, \ell_{T}\right)}^{\text {period } T} \tag{2}\]

The discount factor is \(\beta=1 /(1+d)\); while \(d\) is the subjective discount rate of future utility.4 Our representative household wants to maximize eq. (2), but she faces two fundamental constraints. The first is that her available hours per period are given by: \[\ell_t = 1 - f_t \tag{3}\]

where \(1\) represents a day, a week, a month, etc. (the maximum level of hours available per period), and \(f\) represents fun time or leisure time.

The second constraint she faces concerns the trade-off between consumption and savings. This constraint can be easily understood if we take into account the decisions that she must make over two consecutive periods: \[\begin{gathered} c_t+s_t = w_t \ell_t \\ c_{t+1} = \left(1+r_{t+1}\right) s_t + {t+1} \ell_{t+1} \end{gathered} \tag{4}\]

where \(s_t\) represents the level of savings she decides to make in period \(t\), which will be invested in period \(t+1\) and receive a return given by \(1+r_{t+1}\). 5 The two constraints in eq. (4) can be consolidated, by eliminating \(s_t\), which leads to: \[\underbrace{c_t+\frac{c_{t+1}}{1+r_{t+1}}}_{\text {value of intertemporal consumption }} \leq \underbrace{w_t \ell_t+\frac{w_{t+1} \cdot \ell_{t+1}}{1+r_{t+1}}}_{\text {value of intertemporal income }} \tag{5}\]

Our representative household intends to maximize her lifetime utility, making decisions year after year, which can take the following mathematical form: \[\begin{gathered} \max _{c_t, c_{t+1}, \ell_t, \ell_{t+1}} u\left(c_t, \ell_t\right)+\beta \cdot u\left(c_{t+1}, \ell_{t+1}\right) \\ \text { subject to: } \quad c_t+\frac{c_{t+1}}{1+r_{t+1}} = w_t \ell_t+\frac{w_{t+1} \cdot \ell_{t+1}}{1+r_{t+1}} \\[4pt] c_t, c_{t+1} \geq 0 \ \ , \ \ \ell_t, \ell_{t+1} \in(0,1) \ \ , \ \ 0<\beta\leq 1 \end{gathered} \tag{6}\] taking \(w_t,w_{t+1}\) and \(r_{t+1}\) as given to her.

Notice that, as shown in Figure 1, the parameters \(\{\sigma,\gamma\}\) are extremely important in determining the level of utility the representative household derives from consumption and hours worked. An accurate description of the RBC model should account for the impact of both parameters on the household’s optimizing behavior. However, in initial treatments of this model, it is common to use a simplification for analytical tractability: \(\gamma=0\). 6 With this simplification, eq. (1) will become: \[u(c_t , \ell_t)=\frac{c_t^{1-\sigma}}{1-\sigma}-\theta \ell_t \tag{7}\]

Eq. (7) will serve as the utility function throughout this document. Economists often formalize the problems they address for clarity and rigor. In this spirit, the problem concerning our representative household is presented in the following way:

NoteHousehold intertemporal problem

The representative household maximizes intertemporal utility by valuing future utility using a discount factor \(\beta\): \[\max _{\left\{c_t, \ell_t k_{t+1}\right\}_{t=0}^{\infty}} \sum_{t=0}^{\infty} \beta^t u\left(c_t, \ell_t\right)=\sum_{t=0}^{\infty} \beta^t\left(\frac{c_t^{1-\sigma}}{1-\sigma}-\theta \cdot \ell_t\right) \tag{8}\] subject to a resource constraint: \[\begin{aligned} c_t+\frac{c_{t+1}}{1+r_{t+1}} = w_t \ell_t+\frac{w_{t+1} \cdot \ell_{t+1}}{1+r_{t+1}} \qquad \qquad \qquad \qquad \qquad \\[8pt] c_t, c_{t+1} \geq 0 \ , \ \ \ell_t, \ell_{t+1} \in(0,1) \ , \ \ 0< \beta \leq 1 \ , \ \ \{w_t, w_{t+1},r_{t+1}\} \text{ given} \end{aligned}\]

2.2 Firms

There is a large number of firms in the economy. Dealing with firms’ heterogeneity at this level is difficult (in the same way it was difficult in the case of households), and for that reason, we will assume that there is a representative firm that produces goods & services, using the publicly available technological level in the economy and hiring labor and capital services for such purpose. The production function that reflects the activity of this representative firm is given by: \[Y_t = a_t K_t^\alpha (n_t \ell_t)^{1-\alpha} \tag{9}\]

Here, \(Y_t\) is the real value of goods and services produced, \(n_t\) is the number of households hired, \(a_t\) is the available technology level used, and \(\ell_t\) is the average hours each household works. Because the household problem uses per-household measures, we use the same units for the firm. We introduce a new variable: \[y_t \equiv \frac{Y_t}{n_t} \tag{10}\]

By dividing both sides of eq. (9) by \(n_t\), we will arrive at a production function that is expressed in terms of per-household units: \[y_t=a_t k_{t}^\alpha \ell_t^{1-\alpha} \tag{11}\]

where \(y\) is real output per household; \(a\) is publicly available technology; \(k\) is capital per household; \(\ell_t\) is the average hours worked per household; and \(\alpha\) is the output/capital elasticity.

The representative firm maximizes profits and takes, because it has no market power, wages and capital rental prices as given for each period ot time: \[\max_{\left\{\ell_t k_t\right\}_{t=0}^{\infty}} \{\pi_t = y_t - w_t \ell_t - r_t k_t \} \tag{12}\]

where \(w_t\) is the wage rate and \(r_t\) is the rental price of capital. As markets are fully competitive, factor returns are equal to their marginal products: \[w_t = \frac{\partial y_t}{\partial \ell_t} = (1-\alpha)\frac{y_t}{\ell_t} \quad , \quad \text{and} \quad r_t = \frac{\partial y_t}{\partial k_t} = \alpha \frac{y_t}{k_t} \tag{13}\]

2.3 The accumulation of capital and labor

As the Real Business Cycle model is strictly concerned with short term business cycles, it does not make much sense to include growth issues in the analysis. For this reason, any growth major concern will be dropped from our discussion in the current document. Therefore, the level of the population remains constant over time, and the same happens to the level of technology in the steady state.

In terms of the population, those concerns mean that the total number of households has to remain constant: \[n_t = \overline{n} \tag{14}\]

which means that only changes in the average hours worked per household (\(\ell\)) can affect the level of output over time.

Tha accumulation of capital obeys an identy accounting that is quite trivial in the national accounts literature. It says that: \[k_{t+1} \equiv i_t+(1-\delta) k_t \tag{15}\]

where \(k\) represents capital per household, \(i\) investment per household, and \(\delta\) the depreciation rate: \(0<\delta<1\).

2.4 Technology

Assume that technology \((a_t)\) does not increase over time (there is no trend); it fluctuates around its steady state value \(\left(\overline{a}\right)\), due to exogenous shocks \(\left(\varepsilon_t\right)\). These shocks do not necessarily mean that the level of technology may regress over time; they only mean that the use of publicly available knowledge may be constrained in some period by exogenous forces. Consider the current example of vaccines in the USA. The political structure is not very favorable to widespread vaccination, which will slow vaccine use, even though knowledge of vaccines remains the same (or even higher).

An equation that can express the perspective described above is the following: \[\ln a_t=(1-\rho) \ln \overline{a}+\rho \ln a_{t-1}+\varepsilon_t \quad, \quad \rho<1 \tag{16}\]

Why logarithms? To make things easier! Define: \[\hat{a}_t=\ln a_t-\ln \overline{a} \tag{17}\]

Then eq. (16) can be written as: \[\hat{a}_t=\rho \cdot \hat{a}_{t-1}+\varepsilon_t \tag{18}\]

i.e., the log-deviation of technology from its steady state is an AR(1) process with \(\rho<1\), and mean=zero. As we will find out by the end of this document, eq. (18) is the most important equation in this entire model. Everything in the model will be determined by what happens to \(a_t\) in the framework we have been describing. If there are no technological shocks, we will have no information about business cycles.

2.5 Output allocation

In a simple model, where there are only households, firms, and a government that does not consume any goods & services, total output per-household \((y_t)\) has to be allocated to real consumption per-household \((c_t)\) and real investment per-household \((i_t)\). Therefore, in this simple economy we have: \[y_t \equiv c_t + i_t \tag{19}\]

2.6 The macroeconomic constraint

We saw that our representative household faces an intertemporal constraint given by eq. (5), And we saw also that the representative firm maximizes profits according to eq. (12). Suppose there is a government that collects information about the entire economy (households and firms) and tries to make the best possible decisions to maximize the welfare of all agents in the entire economy. At the end of the day, that is what governments are supposed to do in classical political theory. Such a government can look at the economic problem as we have been discussing, but not from the isolated perspective of the representative household, nor from the individual perspective of the representative firm.

The government wants to maximize the utility of all households \((\overline{n}\times u_t)\) and the profits of all firms \((\overline{n}\times \pi_t)\), and by maximizing profits, it also maximizes production in the entire economy \((\overline{n}\times y_t)\). Because there is no heterogeneity in the composition of \(\overline{n}\) — which turns out to be just a constant in the decision making process of the benevolent government — such an institution can look at the entire economy by considering all endogenous variables measured in per-household units.7

Under this framework, the government knows that in a simple economy without government consumption and foreign trade, the value of the goods and services produced (real output) is either consumed by households (\(c_t\)) or invested in new capital (\(i_t\)). This allocation of output was given by eq. (19): \[y_t \equiv c_t + i_t \tag{19'}\]

But from eq. (11), we know that real output is produced according to the following equation: \[y_t=a_t k_{t}^\alpha \ell_t^{1-\alpha}\tag{11'}\]

and from eq. (15) , we have that capital accumulation is given by: \[k_{t+1} \equiv i_t+(1-\delta) k_t \tag{15'}\]

Therefore, by inserting eq. (11’) and (15’) into (19’), we get the overall macroeconomic constraint as: \[a_t k_{t}^\alpha \ell_t^{1-\alpha}= c_t + k_{t+1} - (1-\delta) k_t \tag{20}\]

This equation portrays a very simple fact:

  • On its right-hand side: if we want to consume goods & services and to invest one portion of them as well

  • On its left-hand side: we have firstly to produce those goods & services, which require the allocation of labor and capital services (besides the use of publicly available technology) to productive activities.

3 Intertemporal optimization

The general framework presented in the previous sections leads to two related but different problems about the optimization of economic activity. The first is a decentralized problem, in which households maximize intertemporal utility subject to their own budget constraints, and firms maximize profits subject to their own budget constraints. The second problem is that a benevolent government, with information about the entire economy, decides what is best for all agents. Indeed, one may ask why a government would do better than the private agents if there is no heterogeneity in the two groups of agents we consider here (households and firms).

That question makes all the sense. In the current case, as there are no market failures in the economy (a crucial assumption of this framework), the government can not do any better than the decentralized decisions of households and firms. In fact, both outcomes are exactly the same, which would not be the case if some form of market failure were considered in the model (the government outcome is better in this case by internalizing that form of market failure)

In the current document, it is not possible to cover both solutions (the decentralized versus the government solution), and for the sake of simplicity, we will cover only the government solution to the optimization problem we have been discussing (also known as the “central planner” solution). The problem is now very easy to display. The government maximizes the welfare of the representative household subject to the macroeconomic constraint.

3.0.1 The problem

The intertemporal maximization of welfare implemented by the government must solve the following problem: \[\begin{gathered} \max _{\left\{c_t, \ell_tk_{t+1}\right\}_{t=0}^{\infty}} \ \ \sum_{t=0}^{\infty} \beta^t u\left(c_t,\ell_t\right)= \sum_{t=0}^{\infty} \beta^t \left( \frac{c_t^{1-\sigma}}{1-\sigma} - \theta \cdot \ell_t\right) \\[10pt] \text { subject to: } \quad a_t k_t^\alpha \ell_t^{1-\alpha}=c_t+k_{t+1}-(1-\delta) k_t \\[10pt] \qquad \qquad \qquad c_t, c_{t+1} \geq 0 \ , \ \ \ell_t, \ell_{t+1} \in(0,1) \ , \ \ 0< \beta \leq 1 \end{gathered} \tag{21}\]

Obviously, the government knows that it needs also the other four equations of our model because in problem (21) some variables will be implicitly required to solve the problem (as we will see later): \[\begin{split} k_{t+1} &\equiv i_t + (1-\delta) k_t \\[0.2em] y_t &= a_t k_t^\alpha \ell_t^{1-\alpha} \\[0.2em] y_t &\equiv c_t + i_t \\[0.2em] \ln a_t &= (1-\rho)\ln \overline{a} + \rho \ln a_{t-1} + \varepsilon_t ,\\ \varepsilon_t &\sim iid\left(0,\sigma^2\right) \end{split}\]

The problem in (21) is a mathematical problem that can be solved using three different techniques: dynamic programming, optimal control, and Lagrange multipliers. We will use Lagrange multipliers because they are the most intuitive method and arguably the easiest.

3.0.2 The Lagrangian

To solve the problem let us write the Lagrangian function \((\mathcal{L})\) as follows: \[\mathcal{L}=\sum_{t=0}^{\infty} \beta^t\{\underbrace{u\left(c_t, \ell_t\right)}_{\text {utility }}+\lambda_t \underbrace{\left(a_t k_t^\alpha \ell_t^{1-\alpha}+(1-\delta) k_t-c_t-k_{t+1}\right)}_{\text {constraint}}\} \tag{22}\]

where \(\lambda_t\) stands for the Lagrangian multiplier. The procedure that follows involves two recurring steps. First, write the Lagrangian for two consecutive periods, \((t, t+1)\). Then, take first-order conditions with respect to all endogenous variables in the Lagrangian function here: \[\partial \mathcal{L} / \partial c_t=0 \ , \quad \partial \mathcal{L} / \partial k_{t+1}=0 \ , \quad \partial \mathcal{L} / \partial \ell_t=0 \ , \quad \partial \mathcal{L} / \partial \lambda_t=0\]

Although this may seem complicated at first, the process is manageable with patience. To begin, write the Lagrangian for periods \(t\) and \(t+1\) as follows: \[\begin{array}{l} \mathcal{L}=\ldots + \beta^0 \left\{ u\left({\color{teal} c_t}, {\color{red} \ell_t}\right) + \lambda_t\left( a_t k_t^\alpha {\color{red} \ell_t^{1-\alpha}} + (1-\delta) k_t - {\color{teal} c_t} - {\color{blue} k_{t+1}} \right) \right\} \\[4pt] + \beta^1 \left\{ u\left(c_{t+1}, \ell_{t+1}\right) + \lambda_{t+1}\left( a_{t+1} {\color{blue} k_{t+1}^\alpha} \ell_{t+1}^{1-\alpha} + (1-\delta) {\color{blue} k_{t+1}} - c_{t+1} - k_{t+2} \right) \right\} + \ldots \end{array} \tag{23}\]

Notice that we assign different colors to the four variables used in the first-order conditions: \({k_{t+1}}\) is shown in blue, \({\ell_t}\) in red, \({c_t}\) in teal, and \(\lambda_t\) in black. These distinct color assignments will greatly aid in calculating the partial derivatives.

3.0.3 The First-order conditions (FOCs)

The first order conditions (FOCs from now onwards) are given by the following four equations: \[\begin{aligned} {\color{teal}\partial\mathcal{L}/\partial c_t} &= {\color{teal}\beta^0(u'_{c_t}-\lambda_t)=0} && \qquad \qquad \text{(FOC1)} \\[1.2em] {\color{blue}\partial\mathcal{L}/\partial k_{t+1}} &= {\color{blue}-\beta^0\lambda_t + \beta^1\lambda_{t+1} \Bigl(\underbrace{\alpha \cdot a_{t+1}k_{t+1}^{\alpha-1}\ell_{t+1}^{1-\alpha}+1 - \delta}_{\equiv \ r_{t+1}}\Bigr)=0} && \qquad \qquad \text{(FOC2)} \\[0.1em] {\color{red}\partial\mathcal{L}/\partial \ell_t} &= {\color{red}\beta^0\Bigl[u'_{\ell_t} +\lambda_t(1-\alpha)\underbrace{a_t k_t^\alpha\ell_t^{-\alpha}}_{= \ y_t/\ell_t}\Bigr]=0} && \qquad \qquad \text{(FOC3)} \\[0.1em] {\color{black}\partial\mathcal{L}/\partial\lambda_t} &= \beta^0\Bigl(a_t k_t^\alpha \ell_t^{1-\alpha} + (1-\delta)k_t - c_t - k_{t+1}\Bigr)=0 && \qquad \qquad \text{(FOC4)} \end{aligned}\]

Notice that the expression in (FOC2) is a bit cumbersome. It can be greatly simplified if we define a new variable \(r_{t+1}\), which is nothing else than the net value of one unit of capital at time \(t+1\), as follows: \[r_{t+1} \equiv \alpha \cdot a_{t+1} k_{t+1}^{\alpha-1} \ell_{t+1}^{1-\alpha} +1-\delta = \alpha \left(\frac{y_{t+1}}{k_{t+1}}\right) +1-\delta \tag{VOC}\]

3.0.4 Simplying the FOCs

By now we have four FOCs and an helper equation that we named as VOC. The next step is to simplify by reducing the number of equations as much as possible. By using (FOC1) and (FOC2) we can get rid of \(\lambda_t\) and \(\lambda_{t+1}\) from the solution and eliminate one equation from our problem. Let us do it. From FOC1, we know that: \[\beta^0(u'_{c_t}-\lambda_t)=0 \Rightarrow \lambda_t = u'_{c_t} \tag{24}\]

As from eq. (7), the marginal utility of consumption can be written as: \[u'(c_t) = \frac{\partial u(c_t, \ell_t)}{\partial c_t} = c_t^{-\sigma} \tag{25}\]

By inserting eq. (25) into (24), we get: \[\lambda_t = c_t^{-\sigma} \tag{26}\]

Obviously, if \(\lambda_t = c_t^{-\sigma}\), then for period \(t+1\) we must have: \[\lambda_{t+1} = c_{t+1}^{-\sigma} \tag{27}\]

Let us move on to FOC2. From FOC2, we know that \(\beta^0\lambda_t = \beta^1\lambda_{t+1} r_{t+1}\). By inserting eq. (26) and (27) into this FOC2, we get: \[c_t^{-\sigma}=\beta \cdot c_{t+1}^{-\sigma} \cdot r_{t+1} \tag{28}\]

This is the famous Euler equation in macroeconomics. It gives the optimal level of consumption over time, which depends on the discount factor \(\beta\), the risk aversion parameter \(\sigma\) and the net value of capital next period \(r_{t+1}\). Notice that the Euler equation can be written as a ratio \((\xi)\): \[\xi \equiv \frac{c_{t+1}}{c_t} = \left(\beta \cdot r_{t+1}\right)^{1/\sigma} \tag{29}\]

Implying that \(\partial \xi /\partial r_{t+1} > 0\), \(\partial \xi /\partial \beta > 0\), \(\partial \xi /\partial \sigma < 0\). That is, over time, the level of consumption will increase if \(r\) goes up, if \(\beta\) goes up, and if \(\sigma\) also goes down.

Now we are going to simplify FOC3. From FOC3, we know that: \(\beta^0\left[u_{\ell_t}^{\prime}+\lambda_t(1-\alpha) \frac{y_t}{\ell_t}\right]=0\). As we know that from eq. (7) the marginal utility of working is given by: \[u'(\ell_t) = \frac{\partial u(c_t, \ell_t)}{\partial \ell_t} = -\theta \tag{30}\]

By inserting eq. (30) and (26) into (FOC3), we get: \[-\theta + c_t^{-\sigma} (1-\alpha) \frac{y_t}{\ell_t} = 0 \quad \Rightarrow \quad \frac{y_t}{\ell_t}=\left(\frac{\theta}{1-\alpha}\right) c_t^\sigma \tag{31}\]

This is the condition that optimizes the labor supply in the economy. Notice that it is an entirely static equation, which means that it has no impact on the dynamics of this economic framework.

As far as FOC4 is concerned, there in not much that we can do to simplify this equation. In fact, its simplification is a trivial exercise. From FOC4, we know that: \[{\color{black}\beta^0\Bigl(a_t k_t^\alpha \ell_t^{1-\alpha} + (1-\delta)k_t - c_t - k_{t+1}\Bigr)=0}\]

As \(\beta^0 =1\), this implies that the resource constraint is fully satisfied:\[a_t k_t^\alpha \ell_t^{1-\alpha} = c_t + k_{t+1} - (1-\delta)k_t\]

No more simplifications are possible in this equation.

By now we have we have simplified our optimal conditions as much as possible. We have three simplified FOCs: \[\begin{aligned} \qquad \qquad \qquad \qquad \qquad c_t^{-\sigma} & =\beta \cdot c_{t+1}^{-\sigma} \cdot r_{t+1} \qquad \qquad \text{(Optimal Consumption (Euler))} \\[8pt] \qquad \qquad \qquad \qquad \qquad \frac{y_t}{\ell_t} & =\left(\frac{\theta}{1-\alpha}\right) c_t^\sigma \qquad \qquad \qquad \qquad \ \text{(Optimal labor supply)} \\[8pt] \underbrace{a_t k_t^\alpha \ell_t^{1-\alpha}}_{=\ y_t} & =c_t+\underbrace{k_{t+1}-(1-\delta) k_t}_{=\ i_t} \qquad \ \text{(Macroeconomic constraint)} \end{aligned}\]

These three optimal conditions involve seven variables in total: \(\{c_t, \ell_t, k_t, y_t, a_t, r_{t+1}, i_t\}\). As we have only three equations and seven variables, we need to include more four equations to be able to obtain a solution to the model. The four equation that we need to add to those three above are the following: the helper function we named as (VOC), the production function in (11), the accumulation of technology (16), and finally the output allocation (16). By also considering these four equations, we end up with a 7 equation x 7 variables model and we can proceed to its solution.

3.1 Optimization: summary

Here is the solution to our model, which involves 7 variables – \(\{c_t, \ell_t, k_t, y_t, a_t, r_{t+1}, i_t\}\) – and 7 equations. 8

Table 1: The nonlinear optimal solution to the RBC model
Variables Optimal values Code
Optimal Consumption (Euler) \(c_t^{-\sigma}=\beta \cdot c_{t+1}^{-\sigma} \cdot r_{t+1}\) NL1
Optimal labor supply \(\frac{y_t}{\ell_t}=\left(\frac{\theta}{1-\alpha}\right) c_t^\sigma\) NL2
Capital accumulation \(k_{t+1} \equiv (1-\delta)k_t + i_t\) NL3
Output production \(y_t = a_t k_t^\alpha \ell_t^{1-\alpha}\) NL4
Output allocation \(y_t \equiv c_t + i_t\) NL5
Net value of capital \(r_{t+1} \equiv \alpha \frac{y_{t+1}}{k_{t+1}} + 1 - \delta\) NL6
Technology \(\ln a_t = (1-\rho)\ln\overline{a} + \rho\ln a_{t-1} + \varepsilon_t\) NL7

The model is non-linear and can be easily simulated on a computer. However, there is a problem if we take into account the uncertainty arising from shocks that may hit the economy. If private agents formulate expectations about the future states of the endogenous variables, how can they do it if the model is non-linear? We can formulate expectations of variables only if they are stationary: the expectations operator is linear! We cannot apply expectations to a model that is inherently nonlinear. Therefore, considering uncertainty and nonlinearity requires a trick before we can proceed to the final step of the model’s solution: we must linearize the model in the neighborhood of the steady state.

With this in mind, the next two sections will address these challenges. First, we will demonstrate how to linearize the model. Then, in the following section, we will calculate the steady state of this model.

4 Linearization

There are three techniques that can be used to solve this model as it stands right now: local methods (linearization) and global methods such as “projection methods” or “dynamic programming”. We will use linearization techniques here because the latter two cases are beyond the scope of this document and will therefore be skipped in these lecture notes.

We will apply a specific linearization technique to the seven nonlinear equations obtained in the previous section. This type of linearization is known as \(\Delta\)log linearization. It is very easy to implement, and can save significant time during the linearization of a DSGE model. The principle is extremely simple: apply the natural logarithm \((\ln)\) to an equation that represents a time series and then take a first-order difference between its values at \(t+1\) and \(t\). For simplicity, assume that in this explanation, the original variables expressed in levels are represented by small letters, and the rate of change of each variable is represented by a hat on top of those small letters. That is, if we have a certain variable \(x_t\) measured in levels, its rate of change at time \(t\) is named as \(\hat{x}_t\).

4.1 Some useful rules

The results presented in the table below are demonstrated in an appendix presented in Section 8.

Table 2: From levels into % change from steady state
In levels As % change Code
Linear function \(y_t = 2x_t\) \(\hat y_t \approx \hat{x}_t\) R1
Multiplicative function \(y_t = 2x_t z_t\) \(\hat y_t \approx \hat x_t + \hat z_t\) R2
Power function \(y_t = 2x_t z_t^{-3}\) \(\hat y_t \approx \hat x_t - 3 \hat z_t\) R3
Additive function \(y_t = x_t + z_t\) \(\hat y_t = \hat x_t (\overline{x}/\overline{y}) + \hat z_t (\overline{z} / \overline{y})\) R4
Additive constant \(y_t = x_t + 2\) \(\hat y_t = \hat x_t (\overline{x} /\overline{y})\) R5

4.2 Model’s linearization

We will linearize all the seven equations presented in Table 1. Let us start with the Euler equation that provides the optimal path for intertemporal consumption. This equation was presented as: \[c_t^{-\sigma}=\beta \cdot c_{t+1}^{-\sigma} \cdot r_{t+1} \tag{32}\]

To linearize this equation, we should take into account two points: firstly, it falls into the category of a power function as described in Table 2; and secondly, \(\{\beta, \sigma\}\) are just parameters (they do not change). Therefore, the variables we have to linearize are only \(\{c_t,c_{t+1}, r_{t+1}\}\). To stimulate practice, we are going to linearize this equation using two different ways: (i) by directly applying the rule R3 in the table above, and (ii) by using the first difference of logs as we do when we derive that same rule in the appendix presented in Section 8.

Notice that the Euler equation above can be written as: \[c_t=\left(\beta \cdot c_{t+1}^{-\sigma} \cdot r_{t+1}\right)^{-\frac{1}{\sigma}}\] Then, by applying the rule R3 to the previous equation, we get: \[ \hat{c}_t= -\frac{1}{\sigma} \left(-\sigma \hat{c}_{t+1} +\hat{r}_{t+1}\right)\] which can be easily simplified to: \[\hat c_{t} \approx \hat c_{t+1} - \left(\frac{1}{\sigma}\right) \hat r_{t+1} \tag{33}\]

Eq. (33) gives us the first linearized equation of the Real Business Cycle model. It needs no further tweaks because \(\sigma\) is just a model parameter (it does not change), and the structure is now fully linear across all three variables.

NoteRecalling logs

We derived the rule R3 by using logs in the Section 8. Let us see how it is done once more. The Euler equation can be written as: \[c_{t+1}^{\sigma} \cdot c_{t}^{-\sigma} = \beta \cdot r_{t+1} \tag{34}\]

Apply logs to eq. (34) in period \(t+1\): \[\sigma \ln c_{t+1}-\sigma \ln c_{t}=\ln \beta + \ln r_{t+1} \tag{35}\]

and to period \(t\) as well: \[\sigma \ln c_{t}-\sigma \ln c_{t-1}=\ln \beta + \ln r_{t}. \tag{36}\]

Using the usual definition of a variable expressed in terms of percentage deviations from its steady state, e.g., \(\hat{c}_{t+1} \approx \ln c_{t+1}-\ln c_{t}\), to the equations (35) and (36), the terms \(\ln\beta\) cancel out across the two equations, which leads to: \(\hat c_{t} \approx \hat c_{t+1} - \left(\frac{1}{\sigma}\right) \hat r_{t+1}\), the same as in eq. (33).

The second equation that appeared in our sequence of nonlinear equations was the supply of labor. This equation was given as: \[\frac{y_t}{\ell_t} = \left(\frac{\theta}{1-\alpha}\right) c_t^\sigma \tag{37}\]

According to the classification of Table 2, this equation also falls into the category of a power function, where \(y_t,c_t, \ell_t\) are the variables to linearize, while \({\theta, \alpha, \sigma}\) are parameters. Notice that the ratio \(\frac{\theta}{1-\alpha}\) includes only parameters, and it will cancel out in the linearization process. Therefore, in terms of percentage deviations from the steady state, we will get the following result: \[\hat{\ell}_t \approx \hat{y}_t-\sigma \hat{c}_t \tag{38}\]

Now we move to one of the most difficult nonlinear equations for implementing the linearization procedure in this model: the accumulation of capital. This equation was given by: \[k_{t+1}=(1-\delta) k_t+i_t \tag{39}\]

where \(k\) stands for the capital stock, \(i\) is real investment, and \(\delta\) is the depreciation rate (a parameter). Since this linearization is a bit tricky, we are going to solve it in two ways: the hard way and the easy way. Firstly, we present the easy way, which uses the rules presented in Table 2. Then we will show the hard way many people have followed to achieve the same result. 9

The crucial step in the easy approach is to write the equation in terms of something we know how to linearize easily. So let us write it as follows: \[\begin{aligned} & k_{t+1}=\underbrace{(1-\delta) k_t}_{\equiv d_t}+i_t \\ & k_{t+1}=d_t+i_t \\ \end{aligned} \tag{40}\]

Now, we can apply (R4) to (40): \[\hat{k}_{t+1}=\hat{d}_t \frac{\overline{d}}{\overline{k}}+\hat{i}_t \frac{\overline{i}}{\overline{k}} \tag{41}\]

As by the definition used above \(d_t \equiv (1-\delta)k_t\) , and as \(\delta\) is a mere parameter, we must have \(\hat{d}_t=\hat{k}_t\). Notice that we must also have: \(\overline{d} = (1-\delta) \overline{k}\). By inserting these two results into eq. (41), we get: \[\hat{k}_{t+1}=\hat{k}_t \frac{(1-\delta) \overline{k}}{\overline{k}}+\hat{i}_t \frac{\overline{i}}{\overline{k}}\] that is, after simplification: \[ \hat{k}_{t+1}=(1-\delta) \hat{k}_t+\frac{\overline{i}}{\overline{k}} \hat{i}_t \tag{42}\]

Eq. (42) is fully linear now as \(\delta\) is a parameter and \(\overline{i}/\overline{k}\) is a steady state ratio. 10

Now, let us explain what the hard way looks like. In fact, there is nothing new or more complicated in this approach than in the previous ones. The only thing is that we avoid using tricks to simplify the steps we have to undertake, and because of that, we will have to use logarithms in a lengthy expression. Taking logs of eq. (40) leads to: \[\ln k_{t+1}=\ln \left[ i_{t} + (1-\delta) k_{t}\right] \tag{43}\]

Apply the first order Taylor approximation to eq. (43): \[\begin{aligned} & \ln {\overline{k}}+\frac{1}{\overline{k}}\left(k_{t+1}-{\overline{k}}\right)= \\ & \ln \left(\overline{i}+(1-\delta) {\overline{k}} \right)+\frac{1}{\left(\overline{i}+(1-\delta) {\overline{k}}\right)}\left(i_{t}-\overline{i}\right)+\frac{(1-\delta)}{\left(\overline{i}+(1-\delta) {\overline{k}}\right)}\left(k_{t}-{\overline{k}}\right) \end{aligned} \tag{44}\]

We can simplify terms by noticing that: \[\ln \overline{k} = \ln \left(\overline{i}+(1-\delta) {\overline{k}}\right)\]

and so, those two terms cancel out on both sides of eq. (44). Therefore, we can arrive at a much easier expression: \[\frac{1}{\overline{k}}\left(k_{t+1}-{\overline{k}}\right) =\frac{1}{{\overline{k}}}\left(i_{t}-\overline{i}\right)+\frac{(1-\delta)}{{\overline{k}}}\left(k_{t}-{\overline{k}}\right) \tag{45}\]

Now, on the right hand side of eq. (45), apply the following trick (multiply and divide the first term by \(\overline{i}\)): \[\frac{1}{{\overline{k}}}\left(k_{t+1}-{\overline{k}}\right)=\frac{{\color{blue}{\overline{i}}}}{{\overline{k}}} \frac{\left(i_{t}-\overline{i}\right)} {\color{blue}{\overline{i}}} +\frac{(1-\delta)}{{\overline{k}}}\left(k_{t}-{\overline{k}}\right)\]

Using our “hat” notation, and rearranging the terms, we finally get: \[\hat{k}_{t+1}=(1-\delta) \hat{k}_{t} + \left(\frac{\overline{i}}{\overline{k}}\right) \hat{i}_{t} \tag{46}\]

This is the same equation we obtained above; however, because we have to use a lengthy expression, it is more prone to mistakes than the trick above. Obviously, there are two ways to achieve the same result, and we should choose the one we feel most comfortable with.

The next nonlinear equation is the production function: \[y_t=a_t k_t^\alpha \ell_t^{1-\alpha} \tag{47}\]

This equation is very easy to linearize because it has no sums or subtractions involving its variables. According to Table 2, it falls into the category of a power function, and for this reason, we should use the rule (R3). By the direct application of this rule we will get:

\[\hat{y}_{t+1} \approx \hat{a}_{t+1}+\alpha \hat{k}_{t+1}+(1-\alpha) \hat{\ell}_{t+1} \tag{48}\]

As \(\alpha\) is a parameter, this equation is now a fully linear function.

NoteRecap the power rule

Apply logs to (47) for two consecutive periods \((t+1, t)\) and then subtract one expression from the other. \[\begin{aligned} \ln y_{t+1}&=\ln a_{t+1}+\alpha \ln k_{t+1}+(1-\alpha) \ln \ell_{t+1} \\ \ln y_t &= \ln a_t+\alpha \ln k_t+(1-\alpha) \ln \ell_t \\ \hat{y}_{t+1} &= \ln y_{t+1}-\ln y_t \\ & \approx \ln a_{t+1}-\ln a_t+\alpha\left(\ln k_{t+1}-\ln k_t\right)+(1-\alpha)\left(\ln l_{t+1}-\ln \ell_t\right) \\ & \approx \hat{a}_{t+1}+\alpha \hat{k}_{t+1}+(1-\alpha) \hat{\ell}_{t+1} \end{aligned}\] Therefore, for period \(t+1\), the linearized version of the production function is given by eq. (48), and for period \(t\), the linearized versions is as follows: \[\hat{y}_{t} \approx \hat{a}_{t}+\alpha \hat{k}_{t}+(1-\alpha) \hat{\ell}_{t}\]

The next equation is the fundamental equation from national accounts output allocation, which says that, in a simple economy without government consumption and foreign trade, output must be either consumed by households or invested: \[y_t = c_t + i_t \tag{49}\]

There are no parameters in the equation (49) (or, they exist but they are not visible because they are just 1). Following Table 2, this equation falls into the category of an additive function. Its linearization should now be taken as an easy exercise by following the rule (R4):

\[\hat{y}_t=\hat{c}_t\left(\frac{\overline{c}}{\overline{y}}\right)+\hat{i}\left(\frac{\overline{i}}{\overline{y}}\right) \tag{50}\]

Following our list of non-linear equations, the next one is the net value of capital: \[r_{t+1} \equiv \alpha\left(y_{t+1} / k_{t+1}\right)+1-\delta \tag{51}\]

This equation falls into the category of an additive constant function. Notice that \(\{\alpha, \delta,1\}\) are parameters or constants, and so they do not change. We have three variables to linearize and an additive constant in our equation. It looks complicated, but with a similar trick to the one in the box above (“A very useful trick”), it turns out very easy indeed.

Let us apply two definitions to simplify eq. (51): \[q_{t+1} \equiv \alpha \left(\frac{y_{t+1}}{k_{t+1}}\right) \quad ; \quad u_{t+1} \equiv 1-\delta \tag{52}\]

So, eq. (51) now looks like something extremely simple to linearize: \[r_{t+1} = q_{t+1} + u_{t+1} \tag{53}\]

\[\hat{r}_{t+1}=\hat{q}_{t+1} \left(\frac{\overline{q}}{\overline{r}}\right) + \hat{u}_{t+1} \left(\frac{\overline{u}}{\overline{r}}\right)\] \[\hat{r}_{t+1}=\frac{1}{\overline{r}}\left[\hat{q}_{t+1} \cdot \overline{q}+\hat{u}_{t+1} \cdot \overline{u}\right] \tag{54}\]

However, the new variable \(u_{t+1} \equiv 1-\delta\) is a mere sum of two constants, which implies that its rate of change must be zero by definition: \(\hat{u}_{t+1}=0\). Inserting this result into eq (54), we will obtain: \[\begin{aligned} \hat{r}_{t+1} & =\frac{\overline{q}}{\overline{r}} \hat{q}_{t+1} \\ & =\frac{\alpha\left(\frac{\overline{y}}{\overline{k}}\right)}{\overline{r}} \hat{q}_{t+1} \end{aligned} \tag{55}\]

Finally, by using the definition that we used above, \(q_{t+1} \equiv \alpha \frac{y_{t+1}}{k_{t+1}}\) , and by applying rates of change to this definition, we will get that \(\hat{q}_{t+1} = (\hat{y}_{t+1}- \hat{k}_{t+1})\). Inserting this result back into eq. (55) leads to the final result:

\[\hat{r}_{t+1}= \left(\frac{\alpha} {\overline{r}} \cdot {\frac{\overline{y}}{\overline{k}}} \right) (\hat{y}_{t+1}- \hat{k}_{t+1}) \tag{56}\]

Et voilá! Something that looked complicated was made easy by playing a little trick. Eq. (56) is our sixth linearized equation. There is only one left, which is the easiest one: the accumulation of technology. The behavior technology was presented as:

\[\ln a_t=(1-\rho) \ln \overline{a}+\rho \ln a_{t-1}+\varepsilon_t \quad , \quad \rho<1 \tag{57}\]

The use of logs in the previous equation (from the beginning, by assumption) will now become very easily understood. If we subtract \(\ln \overline{a}\) from both sides of eq. (57), we will get:

\[\ln a_t-\ln \overline{a}=(1-\rho) \ln \overline{a}+\rho \ln a_{t-1}-\ln \overline{a}+ \varepsilon_t.\]

By cancelling out some terms on the right hand-side of the previous equation, and using the definition of the rate of change to this particular case \(\hat{a}_t=\ln a_t-\ln \overline{a}\), we will get the last linearized equation of our model:

\[\hat{a}_t=\rho \cdot \hat{a}_{t-1}+\varepsilon_t \tag{58}\]

The linearization of all the nonlinear equations that comprise our model has been completed. Now, for simplicity, we can put all of them together:

4.3 Linearization: summary

Table 3: The linearized RBC model
Variables Linearized equations Code
Optimal consumption (Euler) \(\hat{c}_t \approx \hat{c}_{t+1} - \frac{1}{\sigma}\hat{r}_{t+1}\) L1
Optimal labor supply \(\hat{\ell}_t \approx \hat{y}_t - \sigma \hat{c}_t\) L2
Capital accumulation \(\hat{k}_{t+1}=(1-\delta) \hat{k}_{t}+\hat{i}_t \color{red}{\frac{\overline {i}}{\overline{k}}}\) L3
Output production \(\hat{y}_t \approx \hat{a}_t + \alpha \hat{k}_t + (1-\alpha)\hat{\ell}_t\) L4
Output allocation \(\hat{y}_t=\hat{c}_t {\color{red}{\frac{\overline{c}}{\overline{y}}}} +\hat{i}_t {\color{red}{\frac{\overline{i}}{\overline{y}}}}\) L5
Net value of capital \(\hat{r}_{t+1}= \left(\frac{\alpha} {{\color{red}\overline{r}}} \cdot {\color{red}{\frac{\overline{y}}{\overline{k}}}} \right) (\hat{y}_{t+1}- \hat{k}_{t+1})\) L6
Technology \(\hat{a}_t = \rho \hat{a}_{t-1} + \varepsilon_t\) L7

The table above shows seven equations (L1 to L7) and seven unknowns: \(\{\hat{c}_t, \hat{\ell}_t, \hat{k}_t, \hat{y}_t, \hat{a}_t, \hat{r}_{t}, \hat{i}_t\}\). The other elements of that system of equations are parameters \(\{\sigma,\delta, \alpha, \rho \}\), and a set of ratios involving the values of the endogenous variables at the steady state \(\small{\Big\{{\color{red} \overline{i}/{\overline{k}} \ , \ \overline{i}/{\overline{y}} \ , \ \overline{c}/{\overline{y}} \ , \ \overline{y}/{\overline{k}}} \ , \ \alpha /{\color{red}\overline{r}} \Big\}}\). To solve the model, we must assign values to the parameters and know the values of those ratios. Until now, we have not discussed the values of those ratios, which is why we made them red.

The next section does precisely that: we will compute the steady-state values associated with each of those ratios in red.

5 The steady state

To compute the steady-state of a variable called \(x\), we must impose the usual condition: \[x_{t+1} = x_t = \overline{x}. \tag{59}\]

Now, we will have to apply the general condition above to all seven equations obtained in the previous section. The order here will not strictly follow the order in Table 1, to make our lives easier. We will start with the easiest ones and then move on to the more tricky ratios, those that require some of the previous calculations.

Let us start with the Euler equation (eq. NL1): \[c_t^{-\sigma} =\beta \left(c_{t+1}^{-\sigma} \cdot r_{t+1}\right) \Rightarrow \frac{(\overline{c})^{-\sigma}}{(\overline{c})^{-\sigma}} =\beta \cdot \overline{r}\]

\[\overline{r} =\beta^{-1} \tag{60}\]

Therefore, in the steady state, the net value of capital \((r)\) is completely determined by the discount factor \((\beta)\). Let us move to the accumulation of capital (NL3): \[\overline{k}=(1-\delta) \overline{k}+\overline{i} \quad \Rightarrow \quad \frac{\overline{i}}{\overline{k}}=\delta \tag{61}\]

Now, we should move on to the equation (NL4): \(r_{t+1} \equiv \alpha \left(\frac{y_{t+1}}{k_{t+1}} \right) +1-\delta\). At the steady-state this equation can be written as: \[\overline{r} = \alpha\left(\frac{\overline{y}}{\overline{k}}\right)+1-\delta\]

As from (60) we know that \(\overline{r} =\beta^{-1}\), by inserting this result into the previous equation, we get: \[\beta^{-1} = \alpha\left(\frac{\overline{y}}{\overline{k}}\right)+1-\delta \quad \Rightarrow \quad \frac{\overline{y}}{\overline{k}} =\frac{\beta^{-1}+\delta-1}{\alpha} \tag{62}\]

From eq. (62) we have \(\frac{\overline{y}}{\overline{k}} =\frac{\beta^{-1}+\delta-1}{\alpha}\), and from eq. (61) we got the following result \(\frac{\overline{i}}{\overline{k}}=\delta\). Then, we can obtain another important ratio after some some algebra manipulation: \[\frac{\overline{i}}{\overline{y}}=\frac{\frac{\overline{i}}{\overline{k}}}{\frac{\overline{y}}{\overline{k}}} \ \ \Rightarrow \ \ \frac{\overline{i}}{\overline{y}} =\frac{\delta}{\frac{\beta^{-1}+\delta-1}{\alpha}} \Rightarrow \ \ \frac{\overline{i}}{\overline{y}} = \phi \tag{63}\]

where for the sake of simplicity we have defined: \[\phi \equiv \frac{\alpha \delta}{\beta^{-1}+\delta-1} \tag{64}\]

From eq. (NL4) we have \(y_t = c_t + i_t\). By dividing this both sides of this equation by \(y_t\), and knowing from (63) that \(\frac{\overline{i}}{\overline{y}}= \phi\), we get:

\[\frac{\overline{c}}{\overline{y}}=1-\frac{\overline{i}}{\overline{y}} \ \ \Rightarrow \ \ \frac{\overline{c}}{\overline{y}}=1-\phi \tag{65}\]

We could stop here because we already know the values of all the red ratios that we mentioned at the end of the previous section: \(\small{\Big\{{\color{red} \overline{i}/{\overline{k}} \ , \ \overline{i}/{\overline{y}} \ , \ \overline{c}/{\overline{y}} \ , \ \overline{y}/{\overline{k}}} \ , \ \alpha /{\color{red}\overline{r}} \Big\}}\). But, for a matter of completeness, we can easily compute the two remaining ratios. From eq. (NL2) we can easily obtain the following ratio \(\frac{\overline{y}}{\overline{\ell}}\): \[\frac{\overline{y}}{\overline{\ell}}=\frac{\theta}{1-\alpha}(\overline{c})^\sigma \tag{66}\]

Finally, let us conclude this exercise by examining what happens to technology in the steady state. The dynamics of technology is given by: \(\ln a_t=(1-\rho) \ln \overline{a}+\rho \ln a_{t-1}+\varepsilon_t\). Therefore, without the shocks \(\varepsilon_t\), we can obtain the following result in the steady-state:

\[\ln \overline{a}=(1-\rho) \ln \overline{a}+\rho \ln \overline{a} \quad \Rightarrow \quad 0=\rho \times 0 \tag{67}\]

Notice that, according to eq. (67), only the value of \(\overline{a}=1\) is consistent with the steady state, as \(\ln 1 = \rho \times \ln 1 \Rightarrow 0 = \rho \times 0\), as long as \(\rho \neq 0\), which is our case in this model. For example, if \(\overline{a}=10\), then \(\ln 10 \neq \rho \times \ln 10\).

We should now summarize all the information we collected in this section, as it will be required in the following section and in the remaining parts of this document.

5.1 The steady-state: summary

Table 4: The linearized RBC model
Variables Steady-state values Code
Net value of capital \(\overline{r} =\beta^{-1}\) S1
Investment/capital ratio \(\frac{\overline{i}}{\overline{k}}=\delta\) S2
Output/capital ratio \((\overline{y}/\overline{k}) = (\beta^{-1}+\delta-1)/\alpha\) S3
Investment/output ratio \(\overline{i}/\overline{y} = \phi\) S4
Consumption/output ratio \(\overline{c}/\overline{y} = 1-\phi\) S5
Output/labor ratio \((\overline{y}/\overline{\ell}) = (\theta/(1-\alpha))(\overline{c})^\sigma\) S6
Technology \(\overline{a}=1\) S7

6 The computer & simulation

In the previous three sections, we took the following steps. In Section 3, we obtained a set of 7 nonlinear equations to solve the government problem. However, the system is nonlinear, so we must linearize each equation around the steady state before solving. In Section 4, we achieved this linearization. In the previous section (Section 5), we computed the steady state of these equations. We are now ready to solve our government problem.

6.1 Linearized model with uncertainty

If we insert the steady state ratios calculated in the previous section — more specifically, they can all be found in Table 4 — into the linearized equations of the solution to the model summarized, in Table 3, we will obtain a set of seven equations that will have only the seven endogenous variables, parameters, and the exogenous shock. The linear version of the model can now be solved.

To make all the steps very clear, now we are going to do the following:

  1. Substitute the ratios in Table 4 \(\small{\Big\{{\color{red} \bar{i}/{\bar{k}} \ , \ \bar{i}/{\bar{y}} \ , \ \bar{c}/{\bar{y}} \ , \ \bar{y}/{\bar{k}}} \ , \ \alpha /{\color{red}\overline{r}} \Big\}}\) with their steady-state values.
  2. Apply the expectations operator \(\mathbb{E}_t\) to the forward-looking variables at \(t+1\) (\(\hat{c}_{t+1}, \hat{r}_{t+1}, \hat{\ell}_{t+1}\)). We do this only for these variables. The \(t+1\) values of pre-determined variables are already known since they depend on their \(t\) values. It does not make sense to apply the operator to period \(t\), because we know the current values.

By applying those two steps, we will arrive at the following set of equations:

Table 5: The linearized RBC model at the steady state and with uncertainty
Variables Linearized equations Code
Optimal consumption (Euler) \(\hat{c}_t \approx \mathbb{E}_t \hat{c}_{t+1}-\frac{1}{\sigma} \mathbb{E}_t \hat{r}_{t+1}\) U1
Optimal labor supply \(\hat{\ell}_t \approx \hat{y}_t-\sigma \hat{c}_t\) U2
Capital accumulation \(\hat{k}_{t+1}=(1-\delta) \hat{k}_t+\hat{i}_t \cdot \delta\) U3
Output production \(\hat{y}_t \approx \hat{a}_t+\alpha \hat{k}_t+(1-\alpha) \hat{\ell}_t\) U4
Output allocation \(\hat{y}_t=\hat{c}_t(1-\phi)+\hat{i}_t \cdot \phi\) U5
Net value of capital \(\mathbb{E}_t \hat{r}_{t+1}=(1+\beta \delta-\beta) \hat{z}_{t+1}\) U6
Technology \(\hat{a}_t=\rho \hat{a}_{t-1}+\varepsilon_t\) U7

Notice that in (U6) we define a new variable \((\hat{z}_{t+1})\) that substantially simplifies the notation: \[\small{\color{blue}{\hat{z}_{t+1} \equiv \hat{a}_{t+1}+(\alpha-1) \hat{k}_{t+1} + (1-\alpha) \mathbb{E}_t \hat{\ell}_{t+1}}}\]

The model could be simulated on a computer exactly as shown in the table above. It involves seven equations (U1 to U7), with seven endogenous variables \(\{\hat{a}_t, \hat{k}_t, \hat{c}_t, \hat{\ell}_t, \hat{y}_t, \hat{i}_t, \hat{r}_t\}\), one exogenous variable or the shock \((\varepsilon_t)\), and five parameters \(\{\alpha,\beta,\sigma,\delta,\rho\}\). But if we jump right down to the computer, with seven equations and seven variables, the matrices will be relatively large, and mistakes are more likely. We can avoid this by spotting that we can actually solve the model using only four of those seven equations: U7, U3, U2, and U1.

These four equations will include only four endogenous variables: \(\hat{a}_t, \hat{k}_t, \hat{\ell}_t , \hat{c}_t\). The order in which they are presented in the table below is not arbitrary: it is based on the nature of those four variables, grouping them into blocks, with the backward-looking variables listed first. The first two (U7 and U3) are predetermined variables \((a_t,k_t)\) ; once we know the initial conditions, we will know their next values. The third one (U2) is a static variable \((\ell_t)\), which has no dynamics of its own; once we know the values of the other variables, we will know its value. The fourth equation represents the behavior of a forward-looking variable \((c_t)\).

Table 6: The small version of the RBC model to use in the simulation
Variables Linearized equations Code
Technology \(\hat{a}_t=\rho \hat{a}_{t-1}+\varepsilon_t\) U7
Capital accumulation \(\hat{k}_{t+1}=(1-\delta) \hat{k}_t+\hat{i}_t \cdot \delta\) U3
Optimal labor supply \(\hat{\ell}_t \approx \hat{y}_t-\sigma \hat{c}_t\) U2
Optimal consumption (Euler) \(\hat{c}_t \approx \mathbb{E}_t \hat{c}_{t+1}-\frac{1}{\sigma} \mathbb{E}_t \hat{r}_{t+1}\) U1

Notice that the three equations that were not included in the table above (U4, U5, U6) are all equations that represent static variables: \(\hat{y}_t,\hat{i}_t, \hat{r}_{t+1}\). Once we know the values of the variables in the table above, we can easily compute the values of these three static variables; for this reason, we took this simplification step to reduce the model solution to only four equations. Now, we can jump into the computer.

6.2 State space representation

To implement the solution to the linearized version of the RBC model with uncertainty, we have to write the model in accordance with the Blanchard-Kahn method to solve models with rational expectations, see Blanchard and Kahn (1980). This method requires that the model should be written in state space form as follows:

\[\mathcal{A}\left[\begin{array}{l} w_{t+1} \\ \mathbb{E}_{t} v_{t+1} \end{array}\right]=\mathcal{B}\left[\begin{array}{l} w_{t} \\ v_{t} \end{array}\right]+\mathcal{C}\left[\begin{array}{c} \varepsilon_{t+1}^{w} \\ \varepsilon_{t+1}^{v} \end{array}\right]+\mathcal{D} \tag{6}\]

where \(w\) is a vector of backward-looking variables (it may include static variables as well), and \(v\) is a vector of forward looking variables. Multiplying both sides of the previous equation by \(\mathcal{A}^{-1}\), leads to:
\[\left[\begin{array}{c} w_{t+1} \\ \mathbb{E}_{t} v_{t+1} \end{array}\right]=\underbrace{\mathcal{A}^{-1} \mathcal{B}}_{\mathcal{R}}\left[\begin{array}{c} w_{t} \\ v_{t+1} \end{array}\right]+\underbrace{\mathcal{A}^{-1} \mathcal{C}}_{\mathcal{U}}\left[\begin{array}{c} \varepsilon_{t+1}^{w} \\ \varepsilon_{t+1}^{v} \end{array}\right] + \underbrace{\mathcal{A}^{-1} \mathcal{D}}_{\mathcal{H}} \tag{7}\]

In this particular model, we have two variables which are clearly not forward-looking: \(a_t\) and \(k_t\). These two variables are predetermined (or backward-looking) because, in the absence of shocks, they are completely determined by their past. On the other hand, consumption \((c_t)\) is clearly forward-looking because its current level depends on its expected value one period ahead. The fourth variable – labor or \((\ell_t)\) – is neither predetermined nor forward-looking, because it is fully determined by contemporaneous variables. Such a variable is called a static one, and in a dynamic model, its associated eigenvalue is 0. So we can write: \[w_{t+1}=\left[\begin{array}{l} \hat{a}_{t+1} \\ \hat{k}_{t+1} \\ \mathbb{E}_t \hat{\ell}_{t+1} \\ \end{array}\right] \ , \ \mathbb{E}_t v_{t+1} =\left[\begin{array}{l} \mathbb{E}_t \hat{c}_{t+1} \end{array}\right]\]

Following that classification of the variables, and organizing them by blocks, we can write the system of those four equations in matrix form, as follows: \[\begin{aligned} &{\color{blue} \underbrace{ \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ -\frac{1}{\alpha} & -1 & 1 & \frac{\sigma}{\alpha} \\ -\frac{\varphi}{\sigma} & -\frac{\varphi(\alpha-1)}{\sigma} & -\frac{\varphi(1-\alpha)}{\sigma} & 1 \end{bmatrix} }_{\mathcal A} \begin{bmatrix} \hat a_{t+1} \\ \hat k_{t+1} \\ \mathbb E_t \hat{\ell}_{t+1} \\ \mathbb E_t \hat{c}_{t+1} \end{bmatrix} }= \\[1em] &\underbrace{ \begin{bmatrix} \rho & 0 & 0 & 0 \\ \frac{\delta}{\phi} & \frac{1}{\beta} & \frac{\delta(1-\alpha)}{\phi} & -\frac{\delta(1-\phi)}{\phi} \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} }_{\mathcal B} \begin{bmatrix} \hat a_t \\ \hat k_t \\ \hat\ell_t \\ \hat c_t \end{bmatrix} + {\color{magenta} \underbrace{ \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} }_{\mathcal C} \begin{bmatrix} \varepsilon^a_{t+1}\\ \varepsilon^k_{t+1}\\ \varepsilon^\ell_{t+1}\\ \varepsilon^c_{t+1} \end{bmatrix} } + \underbrace{ \begin{bmatrix} \color{teal} 0\\ \color{teal} 0\\ \color{teal} 0\\ \color{teal} 0 \end{bmatrix} }_{\mathcal D} \end{aligned}\]

6.3 Ready for the computer

Next we can pass the information into the computer. We will write down the three squared matrices – \({\mathcal{A}}, {\mathcal{B}}, {\mathcal{C}}\) – with the following parameter values and definitions used in the two simplifications used throughout the entire exercise:

\[\begin{array}{ccccccccccc} \alpha & \beta & \sigma & \delta & \rho & \\ \hline 0.4 & 0.99 & 2 & 0.1 & 0.5 \end{array}\]

\[\phi \equiv \frac{\alpha \delta}{\beta^{-1}+\delta-1} \quad , \text{and} \quad \varphi \equiv 1+\beta(\delta-1)\]

α = 0.4 ; β = 0.99 ; σ = 2.0 ; δ = 0.1 ; ρ = 0.5    # parameter values  
ϕ =* δ) / ((1/β) + δ - 1)                       # parameters (definition)           
φ = 1 + β *- 1)                                 # parameters (definition)   

The matrices will be written as follows in Julia:

A = zeros(4,4)              # A is a 4x4 matrix of zeros
B = zeros(4,4)              # B is a 4x4 matrix of zeros
C = zeros(4,4)              # C is a 4x4 matrix of zeros
D = zeros(4,1)              # D is a 4x1 matrix of zeros

# Filling in the non-zero entries of matrix A
A[1,1] =  1.0
A[2,2] =  1.0
A[3,1] = -1/α               
A[3,2] = -1.0
A[3,3] =  1.0   
A[3,4] =  σ/α
A[4,1] = -φ/σ
A[4,2] = -(φ *- 1)) / σ
A[4,3] = -(φ *(1 - α)) / σ
A[4,4] =  1.0   

# Filling in the non-zero entries of matrix B
B[1,1] =  ρ
B[2,1] =  δ/ϕ
B[2,2] =  1/β
B[2,3] =/ϕ)*(1-α)
B[2,4] = -/ϕ)*(1-ϕ)
B[4,4] =  1.0

# Filling in the non-zero entries of matrix C
C[1,1] = 1.0

6.4 Simulation

With those parameter values, the characteristic matrix of our model — matrix \({\mathcal R}\) — gives the following information about eigenvalues and eigenvectors, using the Julia programming language:

Eigen{Float64, Float64, Matrix{Float64}, Vector{Float64}}
values:
4-element Vector{Float64}:
 0.0
 0.5
 0.8594757198109162
 1.1752525252525254
vectors:
4×4 Matrix{Float64}:
  0.0           0.382531    0.0        0.0
 -0.161357     -0.482192    0.835431  -0.707107
  0.986896      0.785671   -0.482287  -0.707107
  2.69869e-17  -0.0623071   0.263543  -4.89068e-17

We have four eigenvalues: \(0.0, 0.5, 0.859, 1.175\). Since we have one eigenvalue with absolute value greater than 1 (\(\lambda_4=1.175\)), this ensures stability of the forward-looking variable. The eigenvalue that is equal to \(0\) is the eigenvalue associated with the static variable \((\lambda_1=0)\). Static variables have no dynamics by definition, and their eigenvalues will be \(0\) by their nature in a dynamic process. Finally, the other two remaining eigenvalues \((\lambda_2=0.5, \lambda_3 = 0.859)\) are in absolute value less than \(1\), which guarantees the stability of the predetermined variables \(a_t, k_t\). Therefore, the Blanchard-Kahn conditions are satisfied, and the model has only one stable long-term equilibrium (or steady-state).

To proceed with the simulation, we can use a for loop to compute the dynamics of the four equations in Table 6. The solution to the linearized version of the model, according to the Blanchard-Kahn method, requires computing four matrices, which we will name here \(f\), \(G\), \(g\), and \(h\); see the detailed derivation of these matrices in an appendix in Section 9. These matrices are computed as the analytical solutions of the two uncoupled blocks of the model; we should first apply the analytical solutions to the non-forward-looking block and only then to the forward-looking block. For the first block, we have:

\[w_{t+1}^*=\underbrace{\left[G^{-1} \Lambda_1 G\right]}_g \cdot w_t^*+\underbrace{\left[G^{-1} M_{11}\right]}_h \cdot \varepsilon_{t+1}\]

and then, for the forward-looking block: \[v_t^*=\underbrace{\left[-P_{22}^{-1} P_{21}\right]}_f \cdot w_t^*\]

with the use of the following definition for simplicity reasons: \[\quad G \equiv P_{11}-P_{12}\left(P_{22}\right)^{-1} P_{21}\]

The elements that enter into the computation of the four matrices above are, e.g., \(G, P_{11}, \Lambda_1, M{11}\), are derived by applying the Jordan decomposition to the model in the state space form. See a detailed proof of the derivation of these elements in an appendix in Section 9, while a graphical interpretation of the Jordan decomposition and the associated partition can be found in the figure Figure 2.

Figure 2: The Jordan partition in the RBC model

We can use the Julia language to compute those four matrices above as follows:

f = -inv(P22) * P21
G = P11 - P12 * inv(P22) * P21
g = inv(G) *1) * G
h = inv(G) * M11

Now, we can finally see the dynamics of the model when the variable \(a_t\) suffers, e.g., a shock of \(+1\) percentage points deviation from its steady state. The for loop is as follows:

T = 30                                  # number of iterations
w_1 = [0.0 , 0.0 , 0.0]                 # initial conditions (non-forward looking block)
p = length(w_1)                         # number of initial conditions
ε = zeros(p , T)                        # ε is a vector with p rows, T columns, all zeros
ε[1,2] = shock_a                        # in ε, the shock appears in row 1, column 2
w = [w_1  zeros(p , T-1)]               # Pre-allocating memory 
    
for t = 1 : T-1                                                 
     w[:, t+1] = g * w[:, t] + h * ε[:, t+1]    # the for-loop for the backward-looking block
end

v = f * w                                       # Simulating the forward-looking block

The plot with the impulse response functions of our four variables \((\hat{y}_t,\hat{i}_t, \hat{r}_{t+1})\) is presented in Figure 3. The remaining three variables of the model — see U4, U5, and U6 in Table 5 — can now be easily computed with three simple Julia code lines (notice the remarkable similarity between the Julia code in the cell below and the mathematical expressions in Table 5):11 The corresponding impulse response functions can also be plotted as in (fig_IRFs_2?):

y = a + α * k + (1 - α)* l                  # from U4 in the slides 
i = (1/ϕ)*(y - ((1 - ϕ)*c))                 # from U5 in the slides
r = φ * (a +- 1)*k + (1 - α)*l)         # from U5 in the slides      
Figure 3: The The IRFs from a positive shock to technology.
Figure 4: The The IRFs from a positive shock to technology.

It is not possible to present all the main results from the simulation of the RBC model in this document. The reader is advised to take a look at the Pluto notebook implementing the entire simulation we have been discussing, which can be found in the following static Pluto notebook. This is a static version of the notebook that displays all the results and the code used to simulate the RBC model; however, due to its static nature, the reader cannot implement any changes to this notebook. 12 The reader can see everything but cannot change anything in the notebook.

If the reader wants to implement some changes to the simulation, an active version of the same notebook is available in the active Pluto notebook. However, to run this active version of the notebook, we must have the Julia programming language and Pluto installed on our computer.jl package is installed as well. Details about such installation can be found on the site Julia & Pluto.

7 Concluding remarks

The RBC model that we have been describing in this document is a major landmark in the modern history of economic thought. Before 1982, we simply did not know how to solve a model that includes all the ingredients we have been considering here: forward-looking behavior, microfoundations, a very elaborate structure, and dynamic optimization, among others. It was the pioneering work of Kydland and Prescott (1982) that opened the door to the use of a framework that is today part of any modern toolkit for macroeconomic analysis.

The model performs extremely well compared to macroeconomic data. For example, the words of Hansen and Wright (1992):

“The model displays short-run cyclical behavior that is qualitatively and quantitatively similar to that displayed by actual economies along many important dimensions. For example, the model predicts that consumption will be less than half as volatile as output, that investment will be about three times as volatile as output, and that consumption, investment, and employment will be strongly positively correlated with output, just as in the postwar U.S. time series. In this sense, the real business cycle approach can be thought of as providing a benchmark for the study of aggregate fluctuations.” page 2

However, one particular result of the model has been subject to severe criticism. As Christiano and Eichenbaum (1992) pointed out:

“We find that the single most salient shortcoming of existing RBC models lies in their predictions for the correlation between these variables [total factor productivity and hours worked]. Existing RBC models predict that this correlation is well in excess of 0.9, whereas the actual correlation is much closer to zero.” page 430

As the two sentences above clearly explain, the standard RBC model accounts for many of the facts about business cycles. However, there is one crucial fact that the model seems to violate in a drastic manner: the correlation between total factor productivity and the number of hours supplied is usually higher than \(0.9\) — e.g., close to 0.93 in the model we simulated in the attached notebook — but apparently close to 0 in the data, as mentioned above.

There are two problems in the case of the mismatch mentioned above. The first is that the model’s high correlation may result from a very simplistic approach to incorporating hours. For example, Hansen and Wright (1992) showed that once some form of indivisible labor is introduced, the model still predicts many business-cycle facts, including the small correlation between labor supply and productivity. The second problem is not about the model’s internal structure but rather about the relatively poor quality of the data at the time of Christiano and Eichenbaum (1992)’s publication. The problem associated with poor data quality has been significantly reduced, as the quality of the collected data is much better nowadays than it was in the early 1990s; however, it still persists, as we will show.

The most sophisticated database currently available that covers the issues we are discussing here is the dataset developed by Fernald (2014), a frequently updated version here. In Figure 5, we present two panels. On the left-hand panel, the cross-plot displays the correlation between output and productivity (or total factor productivity, the \(a\) variable in the RBC model), and it is not hard to conclude that this correlation is highly positive. On the right-hand side panel, there is a similar pattern in terms of the correlation between output and hours supplied (the \(\ell\) in the RBC model).

This evidence raises doubts about the consistency of Christiano and Eichenbaum (1992)’s argument above: how is it likely that, in economics, we have two aggregates highly correlated with output, yet completely uncorrelated with each other? Is this statistically possible? Yes, it is. Is this likely possible in economics? No, it does not. Small measurement errors in hours worked and total factor productivity may explain the apparent puzzle between these two important macroeconomic variables. Therefore, such a contradiction may be explained by the poor quality of the currently available data on total factor productivity and the average number of hours supplied, rather than by a shortcoming in the RBC model’s internal structure.

Figure 5: A puzzle: output, total factor productivity, and labor supply

8 Appendix A

Most macroeconomic models have a non-linear structure, which makes their analysis either very difficult or even impossible. Fortunately, there are some techniques we can use to overcome problems arising from nonlinearity, and two of the most frequently used are perturbation and linearization near a particular point (usually the process’s steady state). We will use only linearization techniques in this document; for this reason, we present in this appendix a set of linearization rules required for an adequate treatment of the RBC model.

There are three basic techniques that can be used to linearize a function (or a model) that is originally presented as a nonlinear one: (i) Taylor approximation, (ii) log linearization, (iii) \(\varDelta\)log linearization. The last one is the most useful one, because it is simple and fast to learn and use. The fundamental idea is that, if we apply natural logarithms to a particular time series \(x_t\), then: \[g_x \approx \ln x_t - \ln x_{t-1}. \tag{68}\]

where \(g_x\) is defined as the percent change of the variable \(x\) between two consecutive periods. Notice that from now onwards, when we see a symbol like \(g_x\), we intend to represent the rate of growth (or change) of the variable \(x\) (\(g\) for growth, \(x\) as a variable index).

8.1 The importance of the logarithm

Before we start with the derivation of the five linearization rules that are required for the analysis of the RBC model, it is convenient to prove the result in (68). Consider a variable \(x_t\) that grows every year at a constant rate \(g_x\). Mathematically, this process can be written using discrete time as follows:

\[x_t = (1+g_x) x_{t-1}\]

Let us apply logarithms to the equation above:

\[\ln x_t = \ln \left[(1+g_x) x_{t-1}\right]= \ln (1+g_x) + \ln x_{t-1}\]

Now, take into account that for small values of \(g_x\) (and only for small values): 13

\[\ln (1 +g_x) \approx g_x.\]

Therefore, by inserting this result into the previous one, it is clear that what we will get is nothing else than what we stated in eq. (68):

\[\ln x_t - \ln x_{t-1} \approx g_x\]

8.2 Linear function

Consider a linear function: \[y_t = 2 x_t.\]

Apply logs to two consecutive periods:

\[\begin{aligned} \ln y_t &= \ln 2 + \ln x_t \\ \ln y_{t+1} &= \ln 2 + \ln x_{t+1} \end{aligned}\]

Therefore, the first difference of logs is

\[\begin{aligned} \underbrace{\ln y_{t+1}-\ln y_t}_{\approx g_y}&=\left(\ln 2-\ln x_{t+1}\right)-\left(\ln 2-\ln x_t\right) \\ g_y&=(\underbrace{\ln 2-\ln 2}_0)-(\underbrace{\ln x_{t+1}-\ln x_t}_{\approx g_x}) \\ g_y & \approx g_x \end{aligned}\]

In this kind of function, the growth rate of \(y\) equals the growth rate of \(x\). That is:

\[g_y \approx g_x \tag{R1}\]

8.3 Multiplicative function

Consider a linear function of two independent variables \(x\) and \(z\): \[y_t = 2 x_t z_t\]

Apply logs to two consecutive periods to the function above, and you will get

\[\begin{aligned} \ln y_t &= \ln 2 + \ln x_t + \ln z_t \\ \ln y_{t+1} &= \ln 2 + \ln x_{t+1} + \ln z_{t+1} \\ \underbrace{\ln y_{t+1} - \ln y_t}_{\approx \ g_y} &= \left(\ln 2 + \ln x_{t+1} + \ln z_{t+1}\right) - \left(\ln 2 + \ln x_t + \ln z_t\right) \\ g_y &= \underbrace{\ln 2 - \ln 2}_{ 0} + \underbrace{\ln x_{t+1} - \ln x_t}_{\approx \ g_x} + \underbrace{\left(\ln z_{t+1} - \ln z_t\right)}_{\approx \ g_z} \\ \end{aligned}\]

Therefore, we finally can write:

\[g_y \approx g_x + g_z \tag{R2}\]

Therefore, whenever we get a linear multiplicative function, the growth rate of the dependent variable is equal to the sum of the growth rates of the independent variables.

NoteExercise A1

To test the accuracy of the linearization processes discussed here, try a simple exercise. Assume the rate of change of a variable \(v\) is \(g_v=0.02\), or 2%, and another variable \(w\) grows at a rate \(g_w=0.02\). These numbers are typical for real-world macroeconomic variables. Also, suppose another variable \(\mu\) behaves according to this function:

\[\mu_{t+1} = v_{t+1} \times w_{t+1} \tag {E1}\]

Question. What error do we make by using a linearized version of the function in (E1), compared to the actual function? (There is a solution at the end of Section 11).

8.4 A power function

Consider a power function like the following: \[y_t = 2 x_t z_t^{-3}.\]

Apply logs to two consecutive periods:

\[\begin{aligned} \ln y_t &= \ln 2 + \ln x_t - 3 \ln z_t \\ \ln y_{t+1} &= \ln 2 + \ln x_{t+1} - 3 \ln z_{t+1} \end{aligned}\]

Therefore, the first difference of logs is

\[\begin{aligned} \underbrace{\ln y_{t+1} - \ln y_t}_{\approx \ g_y} &= \left(\ln 2 + \ln x_{t+1} - 3 \ln z_{t+1}\right) - \left(\ln 2 + \ln x_t - 3 \ln z_t\right) \\ &= \underbrace{\ln 2 - \ln 2}_{ 0} + \underbrace{\ln x_{t+1} - \ln x_t}_{\approx \ g_x} - 3 \underbrace{\left(\ln z_{t+1} - \ln z_t\right)}_{\approx \ g_z} \end{aligned}\]

So, this power function can be written in \(\Delta\log\) as:

\[g_y \approx g_x - 3 \times g_z \tag{R3}\]

Therefore, in the case of a power function, if the original variable is raised by an exponent, the growth rate of this variable should be multiplied by the exponent itself, in the linearization exercise.

NoteExercise A2

Lets us test the accuracy of the linearization applied to a power function. Assume that the rate of change of a variable \(v\) is \(g_v =0.03\), that is \(3\%\), which is very well in accordance with the numbers seen in the real world of macroeconomics. Consider also that another variable \(x\) behaves according to this function:

\[x_t = 4 v_t^2 \tag{E2}\]

Question. What is the error we make by using a linearized version of the function in (E2), when compared to the actual function? (There is a solution at the end of Section 11).

8.5 An additive function

The last function we need to consider is an additive function like: \[y_{t+1} = x_{t+1} + z_{t+1} \tag{69}\]

Here we can’t apply logs. But there is another way to solve this linearization problem. Firstly, multiply and divide the equation above through as follows: \[\frac{y_{t+1}}{\color{blue}y_t} \, {\color{blue}y_t} = \frac{x_{t+1}}{\color{blue}x_t} \, {\color{blue}x_t} + \frac{z_{t+1}}{\color{blue}z_t} \, {\color{blue}z_t} \tag{70}\]

Now, consider the following definitions: \[\frac{y_{t+1}}{y_t} = 1 + g_y \quad , \quad \frac{x_{t+1}}{x_t} = 1 + g_x \quad , \quad \frac{z_{t+1}}{z_t} = 1 + g_z \tag{71}\]

By applying the definitions in eq (71) into (70), we will get: \[(1+g_y) y_t = (1+g_x) x_t + (1+g_z) z_t \tag{72}\]

Divide eq. (72) through by \(y_t\) and get: \[1 + g_y = (1+g_x) \frac{x_t}{y_t} + (1+g_z) \frac{z_t}{y_t} \tag{73}\]

Notice that the eq. (73) can be written as: \[1 + g_y = \underbrace{\left(\frac{x_t}{y_t} + \frac{z_t}{y_t}\right)}_{=\ ((x_t + z_t)/y_t) = \ 1} + g_x \frac{x_t}{y_t} + g_z \frac{z_t}{y_t} = 1 + + g_x \frac{x_t}{y_t} + g_z \frac{z_t}{y_t} \tag{74}\]

Therefore, as the constants \(1\) that are visible on both sides of the previous equation will cancel out, an additive function like \(y_{t+1} = x_{t+1} + z_{t+1}\) can be expressed as: \[g_y = g_x \left(\frac{x_t}{y_t}\right) + g_z \left(\frac{z_t}{y_t}\right) \tag{R4}\]

Notice that if \(z_t\) is a constant, for example, \(z_t = 2\), its growth rate must be \(g_z = 0\), and we will get: \[g_y = g_x \left(\frac{x_t}{y_t}\right) \tag{R5}\]

In this case, the growth rate of the dependent variable will equal the growth rate of the independent variable, weighted by the ratio of the independent variable to the dependent variable.

8.6 A final twist

Suppose we have an equation of the form:

\[y_t = 2 + 4x_t^2 \tag{75}\]

This equation looks similar to eq. (69), but it is not equal because it has \(4 \times x_t^2\), not just \(x_t\) as in (68). To use the result we obtained for the previous equation, we must apply a trick to make them sharing the same structure:

\[\begin{aligned} & y_{t}=\underbrace{2}_{a_t}+\underbrace{4 x_t^2}_{b_t} \\ & y_{t}=a_t+b_t \\[4pt] & g_y=g_a \left(\frac{a_t}{y_t}\right)+g_b \left(\frac{b_t}{y_t}\right) \\[4pt] & g_y=g_a \left(\frac{2}{2+4 x_t ^2}\right)+g_b \left(\frac{4 x_t^2}{2+4 x^2}\right) \\[4pt] \end{aligned}\]

However, as \(a_t=2\) is a constant, its growth rate must be zero: \(g_a=0\). Therefore:

\[\begin{aligned} & g_y=0 \times \left(\frac{2}{2+4 x_t ^2}\right) +\left(\frac{4 x_t^2}{2+4 x_t^2}\right) \times g_b \\[4pt] &g_y=\left(\frac{4 x_t^2}{2+4 x_t^2}\right)g_b \end{aligned} \tag{76}\]

But what is \(g_b\) equal to in this exercise? As we defined \(b = 4x^2\), then by using the power rule explained above, we will get:

\[g_b = 2g_x \tag{77}\]

By inserting eq. (77) into (76), we will get:

\[g_y= \left(\frac{4 x_t^2}{2+4 x_t^2}\right)2 g_x \tag{78}\]

With this set of linearization rules, we cover the vast majority of cases that will occur in any macroeconomic model. For simplicity, we summarize these five rules in the table below.

Table 7: From levels into % change
In levels As % change Code
Linear function \(y_t = 2x_t\) \(\hat y_t = \hat{x}_t\) R1
Multiplicative function \(y_t = 2x_t z_t\) \(\hat y_t = \hat x_t + \hat z_t\) R2
Power function \(y_t = 2x_t z_t^{-3}\) \(\hat y_t = \hat x_t - 3 \hat z_t\) R3
Additive function \(y_t = x_t + z_t\) \(\hat y_t = \hat x_t (\overline{x}/\overline{y}) + \hat z_t (\overline{z} / \overline{y})\) R4
Additive with a constant \(y_t = x_t + 2\) \(\hat y_t = \hat x_t (\overline{x } /\overline{y})\) R5

9 Appendix B

In this appendix, we provide a detailed explanation of the Blanchard-Kahn conditions and their critical role in the solutions of models with rational expectations (from now on, we will refer to them simply as BK). Solving a model of this type involves, normally, six steps:

  1. Obtain the first-order conditions (FOCs) from an inter-temporal optimization process:
  2. Simplify them to have a model with the smallest possible dimension;
  3. Write the model in state space representation (put the model in matrix form);
  4. Apply an appropriate matrix decomposition (Jordan, QZ) to decouple the two coupled blocks (the predetermined block and the forward-looking block);
  5. Simulate the model (the two blocks);
  6. Deduce conclusions from the simulation process.

In the sequence above, the BkK method enters in step 4. A modern macroeconomic model frequently (or always) has three blocks. One block includes predetermined backward-looking variables, which are entirely determined by past values of themselves or other variables (economists also call these variables “state” variables). The second block is composed by forward-looking variables because their current values depend on the expected future values of themselves or other forward-looking ones (economists also call these variables as “jump” because they reflect a decision making process).14 The third block is comprised by purely static variables: variables that have no dynamics of themselves, and they are completely determined by the other variables contemporaneous values.

Those three blocks involve different constraints on the eigenvalues associated with the variables in each block. For example, the variables in the backward-looking block must have eigenvalues with absolute values less than \(1\) for the model to have only one stable equilibrium. An explosive dynamic is not an option, nor is a situation in which we may end up with multiple equilibria (sunspots, we say in some areas of macroeconomics). By the same token, the forward-looking block must have eigenvalues in absolute value greater than 1. And what happens to the eigenvalues of the variables in the static block? Well, nothing, because static variables have no dynamics, and therefore the eigenvalues associated with them will be zero by construction.

If the three blocks are uncoupled—that is, we can find a solution for each block separately—the BK method is dispensable. We can solve the model without resorting to the BK method, even though we can use it to do so. However, the method becomes indispensable when the three blocks are coupled, so that it is impossible to solve any of them without solving them all simultaneously. The fundamental novelty in the Blanchard and Kahn (1980) paper was the use of the Jordan decomposition of triangular matrices, a result in linear algebra.

9.1 Matrix decomposition methods

Almost all macroeconomic models can be expressed in the following way:

\[\begin{equation} \mathcal{A} \mathbb{E}_t {x}_{t+1} = \mathcal{B} {x}_{t} + \mathcal{C} {\varepsilon}_{t} \end{equation} \tag{B1}\]

where \(\mathcal{A},\mathcal{B}\), \(\mathcal{C}\) are square matrices, all representing the parametric structure of the model, while \(x_t\) is a vector with the endogenous variables of the model, and \(\varepsilon_t\) is a vector of exogenous random shocks. \(\mathbb{E}_t\) is the usual conditional expectations operator. This standard model can be written as:

\[\mathcal{A}\left[\begin{array}{l} w_{t+1} \\ \mathbb{E}_{t} v_{t+1} \end{array}\right]=\mathcal{B}\left[\begin{array}{l} w_{t} \\ v_{t} \end{array}\right]+\mathcal{C}\left[\begin{array}{c} \varepsilon_{t+1}^{w} \\ \varepsilon_{t+1}^{v} \end{array}\right]+\mathcal{D} \tag{B2}\]

where \(w\) is a vector of backward-looking variables (it may include static variables as well), and \(v\) is a vector of forward looking variables. Multiplying both sides of the previous equation by \(\mathcal{A}^{-1}\), leads to:

\[\left[\begin{array}{c} w_{t+1} \\ \mathbb{E}_{t} v_{t+1} \end{array}\right]=\underbrace{\mathcal{A}^{-1} \mathcal{B}}_{\mathcal{R}}\left[\begin{array}{c} w_{t} \\ v_{t+1} \end{array}\right]+\underbrace{\mathcal{A}^{-1} \mathcal{C}}_{\mathcal{U}}\left[\begin{array}{c} \varepsilon_{t+1}^{w} \\ \varepsilon_{t+1}^{v} \end{array}\right] + \underbrace{\mathcal{A}^{-1} \mathcal{D}}_{\mathcal{H}}\tag{B3}\]

where \[ \mathcal{R} \equiv \mathcal{A}^{-1} \mathcal{B} \quad, \quad \mathcal{U} \equiv \mathcal{A}^{-1} \mathcal{C} \quad, \quad \mathcal{H} \equiv \mathcal{A}^{-1} \mathcal{D}. \tag{B4}\]

If the two blocks above are coupled, does it mean that we have our hands tied? No, we can utilize well-known methods from matrix decomposition to easily transform two coupled blocks into two uncoupled ones. The three tricks from algebra that we can use to solve this problem are:

  • The Jordan decomposition
  • The Schur decomposition
  • The QZ factorization (also known as the Generalized Schur decomposition)

For now, we will concentrate only on the Jordan decomposition in this document.15

9.2 The Jordan decomposition

The Jordan method decomposes the characteristic matrix \(\mathcal{R} = \mathcal{A}^{-1} \mathcal{B}\) of the state space representation in the following way:

\[\mathcal{R} = P\Lambda P^{-1} \tag{B5}\]

where the matrix \(P\) contains the eigenvectors of \(\mathcal{R}\) as columns, and \(\Lambda\) is a matrix containing the eigenvalues of \(\mathcal{R}\) in the main diagonal

\[\begin{equation} \Lambda= \left[ {\begin{array}{cc} \left|\lambda_{1}\right|<1 & 0 \\ 0 & \left|\lambda_{2}\right|>1 \end{array} } \right] \end{equation} \tag{B6}\]

such that it solves the (standard) eigenvalue problem:

\[\mathcal{R} v=\lambda v, \quad v \neq 0. \tag{B7}\]

Let us make it more formal:

NoteDefinition: Jordan decomposition

Any \(n \times n\) square matrix \(\mathcal{R}\) can be decomposed into its Jordan canonical form \(\Lambda\) and its similarity transform \(P\), where \[\mathcal{R} = P \Lambda P^{-1}\] and \[\Lambda=\left(\begin{array}{cc} \left|\lambda_{1}\right|<1 & 0 \\ 0 & \left|\lambda_{2}\right|>1 \end{array}\right)\] contains the eigenvalues that solve the (standard) eigenvalue problem \[\mathcal{R} v=\lambda v\] where \(P\) contains the eigenvectors of \(\mathcal{R}\) as columns.

Notice that the way in which we order the eigenvalues \((\lambda_i)\) in the main diagonal of matrix \(\Lambda\) should be in accordance with the order of how we write the predetermined block and the forward-looking block in system (B3). If the predetermined block comes first in (B3), then \(|\lambda_{1}|<1\) has to come first in \(\Lambda\) as well, and vice versa. Moreover, to ensure that we do not alter the system’s nature, we must be cautious when associating each eigenvector with its corresponding eigenvalue, so that the model can be successfully transformed into two uncoupled blocks while retaining the same properties as the original model.

9.2.1 An example

Consider the following matrix:

\[\mathcal{R}=\left[\begin{array}{cc} \frac{1}{\beta} & -\frac{\xi}{\beta} \\ 0 & \alpha \end{array}\right]\]

Using Julia, we need just the four lines of code in the next box to obtain our matrix \(P\) with the eigenvectors, the vector with the eigenvalues \((\lambda_i\)), and the \(\Lambda\) matrix with the two eigenvalues in the main diagonal:

using SymPy                 # importing the package for symbolic computation
@syms α , β , ξ             # defining the symbols used in this example
R = [1/β -ξ/β ; 0  α]       # The elements of matrix R 
P = eigvecs(R)              # the eigenvectors 
Λi = eigvals(R)             # the eigenvalues
Λ = diagm(Λi)               # diagonalizes vector Λi 

\[P = \left[\begin{array}{cc} -\frac{\xi}{\alpha \beta-1} & 1 \\ 1 & 0 \end{array}\right], \quad \lambda_i = \left[\begin{array}{l} \alpha\\ \frac{1}{\beta} \end{array}\right], \quad \Lambda = \left[\begin{array}{ll} \alpha & 0 \\ 0 & \frac{1}{\beta} \end{array}\right]\]

In Figure 6, we present the association of the eigenvalues and the eigenvectors in this simple example. A crucial part of this decomposition process in that figure is that the way we associate eigenvalues with eigenvectors is not arbitrary. For example, the Jordan decomposition only works if the eigenvector \([1 \quad 0]^T\) is associated with the eigenvalue \(1/\beta\), and the same for the other eigenvector. We can check that this decomposition is well done by applying the product of: \[P\Lambda P^{-1}\]

Figure 6: Association of eigenvalues with the corresponding eigenvectors

Now, we need to use just 1 line of code to check whether the Jordan decomposition was correctly implemented. For this we must use double equals sign to check an equality comparison:

P * Λ * inv(P) == R 

We get an answer that the numerical comparison == is true.

Let us turn to the most essential part of this exercise, as far as macroeconomics is concerned. The point is that for the purpose of simulating macroeconomic models, and if we have many eigenvalues and eigenvectors, we may need to rearrange them according to some logic (for example, in descending order, to make sure that we know which ones are bigger than 1, and which ones are smaller than 1, both in modulus). This rearrangement is where we may make serious mistakes, not only because of a lapse of attention but also because we will use a computer to do the job for us, and if we are dealing with symbols (rather than numbers) we may sometimes obtain a strange kind of answer.

So, suppose I want to rewrite this Jordan decomposition, putting the eigenvalue \(1/\beta\) in the first entry in \(\Lambda\) matrix. How do we have to rewrite this system? The only thing we have to do is to move the corresponding eigenvector to the first column in the eigenvectors matrix \((P)\). Using \(P_2, \lambda_{i,2}, \Lambda_2\) to differentiate from the first decomposition example, it will have to be re-written like this:

\[P_2=\left[\begin{array}{cc} 1 & -\frac{\xi}{\alpha \beta-1} \\ 0 & 1 \end{array}\right], \quad \lambda_{i,2}=\left[\begin{array}{l} \frac{1}{\beta} \\ \alpha \end{array}\right], \quad \Lambda_2=\left[\begin{array}{cc} \frac{1}{\beta} & 0 \\ 0 & \alpha \end{array}\right]\]

9.2.2 The relevance for economics

The Jordan decomposition is extremely relevant to economics for two reasons. The first one is related to the use of matrices to analyze and simulate dynamic economic models. The second one is that it allows us to rewrite our coupled models as uncoupled. Let us start with the first point.

You may remember that a simple dynamic process like this one: \[x_{t}= \ \phi+\lambda x_{t-1} \tag{B8}\]

if iterated forward, it will deliver the following solution at the \(n\)th iteration:

\[x_{t}= \lambda^n x_0 + \phi \sum_{i=0}^{n-1}\lambda^{i} \tag{B9}\]

The stability of the previous solution will entirely depend on the value of \(\lambda\), when \(n \rightarrow \infty\). In this case, stability requires that the condition \(| \lambda | < 1\) be satisfied; otherwise, this process exhibits explosive behavior over time. It would be nice to have the same kind of reasoning applied to a system of equations in macroeconomics (no matter how large the former is), write them down in matrix representation, and be able to conclude whether the system is stable or not.

In fact, this is what the Jordan decomposition allows us to see very easily. Consider our matrix \(\mathcal{R}\) and its associated Jordan decomposition: \[\mathcal{R}=P \Lambda P^{-1}\] In this case, if we raise \(\mathcal{R}\) to a power of \(2\) we will get \[\begin{aligned} \mathcal{R}^2 = \ & (P \Lambda P^{-1})^2 = (P \Lambda P^{-1})(P \Lambda P^{-1}) \\ = \ & P \Lambda (P^{-1} P) \Lambda P^{-1} = P \Lambda ^2 P^{-1} \end{aligned} \]

and if we go to the \(n\)th exponentiation (iteration) we will get \[ \mathcal{R}^n=P \Lambda ^n P^{-1}\]

Therefore, the stability of our model will entirely depend only on the eigenvalues of \(\Lambda\). For example, if we have a predetermined 2D system (where all variables depend on the their previous values), then \[\Lambda^{n}=\left[\begin{array}{cc}\lambda_{1}^{n} & 0 \\ 0 & \lambda_{2}^{n}\end{array}\right]\] and we can see the close verisimilitude of a system with 2D versus a system with only one equation (like in eq. (B9). In order to secure stability, we need to have all the two eigenvalues \(|\lambda_i|<1\).

The second point that makes the Jordan decomposition extremely important for economics consists of the fact that we can use this decomposition to separate the two classes of variables (backward looking and forward looking) into two decoupled blocks, even if initially these blocks are coupled when we write the system in state space representation.

Our models are not just filled in with predetermined variables, as we saw in the previous exercise; they are filled with forward-looking (rational expectations) variables and with contemporaneous (or static) variables. In physics or chemistry, particles and atoms only react to stimulus from an external force (or shock); they do not try to anticipate the future. However, in economics, the fact that agents try to predict what may come from the future leads to considerable complexity in the models, which makes the Jordan decomposition quite well-suited for studying this field. So, regardless of how complex a macroeconomic model may be, we can utilize the decomposition to transform a coupled system into an uncoupled one: one block consisting only of predetermined variables, and the other block comprising only forward-looking variables. This simplicity is the principal novelty you will find in this course, as far as dynamic models are concerned.

There are, however, two significant limitations to the Jordan decomposition. The first is that in many cases, the matrices \(\mathcal{A}\) and/or \(P\) are singular (non-invertible), which means that the decomposition itself cannot be accomplished. The second limitation has been highlighted by Cleve Moler , who shows that a change of \(10^{-8}\) in just two elements of the characteristic matrix changes the eigenvalues by \(10^{-4}\). Therefore, the Jordan decomposition is very sensitive to small perturbations in some elements of the matrices that comprise the dynamic system. So, when we exponentiate these eigenvalues 10,000 times, we have little confidence that the dynamics we are observing (simulated by using this decomposition) are truly the dynamics of the model, or not. The strong sensitivity to tiny perturbations makes the use of this decomposition not very reliable:

“The fundamental difficulty is with matrices, like this last A, which are close to, but not exactly equal to, matrices with non­diagonal JCFs. If we try to diagonalize such matrices, then errors are magnified by the condition number of the eigenvector matrix, which can be arbitrarily large. On the other hand, to use the”nearby” nondiagonal JCF may also represent an unacceptably large error. We’re damned if we do and damned if we don’t.” Moler (1994) 16

Now that we understand well what the Jordan decomposition is about, as well as some of its limitations, we can move on to explain the Blanchard-Khan method.

9.3 The Blanchard-Kahn method: proof

Consider that our macroeconomic model is represented by the following system:

\[\left[\begin{array}{c} w_{t+1} \\ \mathbb{E}_t v_{t+1} \end{array}\right]=\underbrace{\mathcal{A}^{-1} \mathcal{B}}_{\mathcal{R}}\left[\begin{array}{c} w_t \\ v_t \end{array}\right]+\underbrace{\mathcal{A}^{-1} \mathcal{C}}_{\mathcal{U}}\left[\begin{array}{l} \varepsilon_{t+1}^w \\ \varepsilon_{t+1}^v \end{array}\right]\]

The Jordan decomposition is given by:

\[\mathcal{R}=P \Lambda P^{-1}\]

where \(P\) contains as columns the eigenvectors of \(\mathcal{R} ; \Lambda\) is a diagonal matrix containing the eigenvalues of \(\mathcal{R}\) in the main diagonal. Apply the decomposition to (A2):

\[\left[\begin{array}{c} w_{t+1} \\ \mathbb{E}_t v_{t+1} \end{array}\right]=P \Lambda P^{-1}\left[\begin{array}{c} w_t \\ v_t \end{array}\right]+\mathcal{U} \cdot\left[\begin{array}{c} \varepsilon_{t+1}^w \\ \varepsilon_{t+1}^v \end{array}\right]\]

Multiply both sides by \(P^{-1}\) :

\[P^{-1}\left[\begin{array}{c} w_{t+1} \\ \mathbb{E}_t v_{t+1} \end{array}\right]=\Lambda P^{-1}\left[\begin{array}{c} w_t \\ v_t \end{array}\right]+\underbrace{P^{-1} \mathcal{U}}_{\mathcal{M}} \cdot\left[\begin{array}{c} \varepsilon_{t+1}^w \\ \varepsilon_{t+1}^v \end{array}\right] \]

9.3.1 Matrices partition

Let us assume that there are no shocks affecting the forward-looking block:

\[\varepsilon_t=0, \forall t\]

Next, we apply a partition to the matrices: \(P^{-1}, \Lambda, \mathcal{M}\) :

\[\underbrace{\left[\begin{array}{ll} P_{11} & P_{12} \\ P_{21} & P_{22} \end{array}\right]\left[\begin{array}{c} w_{t+1} \\ \mathbb{E}_t v_{t+1} \end{array}\right]}_{\mathbb{E}_t\left[\begin{array}{cc} \widetilde{v}_{t+1} \\ \vec{v}_{t+1} \end{array}\right]}=\left[\begin{array}{cc} \Lambda_1 & 0 \\ 0 & \Lambda_2 \end{array}\right] \underbrace{\left[\begin{array}{ll} P_{11} & P_{12} \\ P_{21} & P_{22} \end{array}\right]\left[\begin{array}{c} w_t \\ v_t \end{array}\right]}_{\left[\begin{array}{c} \widetilde{w}_t \\ \bar{v}_t \end{array}\right]}+\underbrace{\left[\begin{array}{ll} \mathcal{M}_{11} & \mathcal{M}_{12} \\ \mathcal{M}_{21} & \mathcal{M}_{22} \end{array}\right]}_M\left[\begin{array}{c} \varepsilon_{t+1}^w \\ 0 \end{array}\right]\]

Our transformed model looks much easier now: \[\left[\begin{array}{c} \widetilde{w}_{t+1} \\ \mathbb{E}_{t} \tilde{v}_{t+1} \end{array}\right]=\left[\begin{array}{cc} \Lambda_{1} & 0 \\ 0 & \Lambda_{2} \end{array}\right]\left[\begin{array}{c} \widetilde{w}_{t} \\ \tilde{v}_{t} \end{array}\right]+ \left[\begin{array}{c} M_{11} \\ M_{21} \end{array}\right] \cdot \varepsilon_{t+1}^w\]

9.3.2 Model written as two decoupled blocks

Since \(\Lambda\) is diagonal, the transformed system is uncoupled, and we can solve each block separately. The transformed model written as a set of decoupled equations will be:

\[\begin{aligned} {\color{blue}\widetilde{w}_{t+1}} & {\color{blue}=\Lambda_1 \cdot \widetilde{w}_t + M_{11} \cdot \varepsilon_{t+1}^w} \qquad \qquad \text{(Predetermined block)}\\[4pt] \qquad \qquad \qquad \qquad {\color{blue}\mathbb{E}_t \tilde{v}_{t+1}} & {\color{blue}=\Lambda_2 \cdot \widetilde{v}_t + M_{21} \cdot \varepsilon_{t+1}^w} \qquad \qquad \text{(Forward-looking block)} \end{aligned}\]

We can now apply our well known strategy:

  • Solve the predetermined transformed block: \[\widetilde{w}_{t}^{*}\]

  • Solve the forward-looking transformed block: \[\tilde{v}_{t}^{*}\]

9.3.3 Solving the forward-looking block

The forward-looking block is given by:

\[\mathbb{E}_t \tilde{v}_{t+1}=\Lambda_2 \tilde{v}_t+M_{21} \varepsilon_{t+1}^w\]

Solve for \(\tilde{v}_t\):

\[\tilde{v}_t=\Lambda_2^{-1} \mathbb{E}_t \tilde{v}_{t+1}-\Lambda_2^{-1} M_{21} \mathbb{E}_t \varepsilon_{t+1}^w\]

Iterate the previous equation forward \(n\) times and take into account that \(|\Lambda_2|>1\). We will get:

\[\tilde{v}_t=\underbrace{\left(\Lambda_2^{-1}\right)^n \mathbb{E}_t \tilde{v}_{t+n}}_{= \ 0 \ , \ n \rightarrow \infty}-\sum_{i=1}^n\left(\Lambda_2^{-1}\right)^n M_{21} \underbrace{\mathbb{E}_t \varepsilon_{t+n}^w}_{= \ 0}\]

Then, the only stable solution will be

\[\tilde{v}_t^*=0 \ , \ \forall t \tag{B10}\]

As from (B10) we know that \(\tilde{v}_t^*=0 \ , \ \forall t\), and as from the partition of \(P^{-1}\) and \(\Lambda\), we know that

\[\tilde{v}_t^*=P_{21} \cdot w_t^*+P_{22} \cdot v_t^* \tag{B11}\]

Equalizing (B10) and (B11), we get:

\[v_t^*=\underbrace{\left[-P_{22}^{-1} P_{21}\right]}_f \cdot w_t^* \tag{B12}\]

We are back to our old solution: the forward-looking block only depends on the predetermined one.

9.3.4 Solving the predetermined block

The predetermined bock was given by: \[\widetilde{w}_{t+1}=\Lambda_1 \widetilde{w}_t+M_{11} \varepsilon_{t+1}^w\]

Let us iterate forward this block. To do so, express it in terms of \(\widetilde{w}_t\):

\[\widetilde{w}_t=\Lambda_1^{-1} \widetilde{w}_{t+1}-\Lambda_1^{-1} M_{11} \varepsilon_{t+1}^w\]

Iterate the previous equation forward \(n\) times and take into account that \(|\Lambda_1|<1\). We will obtain:

\[\widetilde{w}_t=\underbrace{\left(\Lambda_1^{-1}\right)^n \widetilde{w}_{t+n}}_{= \ 0 \ , \ n \rightarrow \infty}-\underbrace{\sum_{i=1}^n\left(\Lambda_1^{-1}\right)^i M_{11} \varepsilon_{t+i}^w}_{= \ 0 \ , \ n \rightarrow \infty}\]

So, we get the following result:

\[\widetilde{w}_t=0 \ , \ \forall t\]

As the transformed predetermined block is stable (because it does not display explosive dynamics), we can find a solution to the original predetermined block. From he partition of \(P^{-1}\) we know that: \[\widetilde{w}_{t}^{*}=P_{11} \cdot w_{t}^{*}+P_{12} \cdot v_{t}^{*} \tag{B13}\]

Now, inserting eq. (B12) into (B13), we get: \[\widetilde{w}_{t}^{*}=\underbrace{\left[P_{11}-P_{12} P_{22}^{-1} P_{21}\right]}_{G} \cdot w_{t}^{*} \tag{B14}\]

Therefore, fom (B14), we know that for periods \(t\) and \(t+1\), we will have: \[\begin{aligned} \widetilde{w}_t^*&=G \cdot w_t^*\\ \widetilde{w}_{t+1}^*&=G \cdot w_{t+1}^* \end{aligned}\tag{B15}\]

As from eq. (Predetermined block) we got: \[\widetilde{w}_{t+1}=\Lambda_{1} \widetilde{w}_{t}+M_{11} \varepsilon_{t+1}^{w} \tag{B16}\]

by mere substitution of (B15) into (B16), we derive our final result: \[\begin{aligned} & G \cdot w_{t+1}^*=\Lambda_1 (G \cdot w_t^*)+M_{11} \varepsilon_{t+1}^w \\[6pt] & w_{t+1}^*=\underbrace{\left[G^{-1} \Lambda_1 G\right]}_g w_t^*+\underbrace{\left[G^{-1} M_{11}\right]}_h \varepsilon_{t+1}^w \end{aligned}\]

That is, we are back to our old strategy: predetermined variables determined by their past values and by the shocks.

9.3.5 Summarizing

  1. Write down the model in state space form
  2. Apply the Jordan decomposition
  3. Decouple the system into two blocks
  4. Make sure the eigenvalues satisfy the Blanchard-Kahn conditions
  5. End up with the two fundamental results:

\[\begin{gathered} v_t^*=\underbrace{\left[-P_{22}^{-1} P_{21}\right]}_f \cdot w_t^* \\ w_{t+1}^*=\underbrace{\left[G^{-1} \Lambda_1 G\right]}_g \cdot w_t^*+\underbrace{\left[G^{-1} M_{11}\right]}_h \cdot \varepsilon_{t+1} \\ \text { with } \quad G \equiv P_{11}-P_{12}\left(P_{22}\right)^{-1} P_{21} \end{gathered}\]

10 Appendix C

In this appendix, we explain the main characteristics of the utility function known as the Constant Relative Risk Aversion (CRRA) function. The original CRRA expressed with respect to consumption \((c)\) and labor \((\ell)\), should be written as:

\[u(c_t , \ell_t)=\frac{c_t^{1-\sigma}-1}{1-\sigma} - \theta \frac{\ell_{t}^{1+\gamma}}{1+\gamma} \qquad ,\qquad \left\{\sigma, \gamma, \theta \right\} \geq 0 \tag{79}\]

Equation (79) looks very similar to eq. (1), which we described in Section 2. The only difference is the \(-1\) in the first term’s denominator of the former equation. This constant is a mere mathematical curiosity used to allow the case when \(\sigma=1\). In this scenario, the first term of the equation above simplifies to \(\ln c_t\).17 With this in mind, the parameters \(\{\sigma,\gamma\}\) are the measures of relative risk aversion of our representative household with respect to consumption and labor supply, respectively. Meanwhile, the parameter \(\theta\) is merely a scaling factor in the model to adjust utility to acceptable levels.18

The two terms of the additive utility function above can be graphically represented in the figure below, where we represent three scenarios for parameters \(\{\sigma,\gamma\}\) and assume \(\theta = 0.1\) in al cases. In the cases of \(\sigma=0\), we say that our representative household is risk neutral towards consumption, while the risk aversion increases with the increase in the value of \(\theta\). Notice that, for example, in the case of \(\theta=1.5\), the household will do her best to avoid very low consumption levels because that would produce a large negative impact on her utility. The same reasoning applies to the labor supply case. A very risk-averse household will do everything it can to avoid a large number of hours supplied, because that would have a large negative impact on its utility.

Figure 7: The CRRA utility functions on consumption and labor

Next, we present a simple description of two other main properties of this particular type of function (probably, the most used utility function in economics due to the properties that follow). The first is that the risk aversion coefficient is constant, meaning that the representative household’s income level does not affect its risk-taking behavior. Let us use a very simple model. Suppose we have consumption in two periods (or two goods) and that: \[U=u\left(c_{1}\right)+u\left(c_{2}\right)\]

as the first derivative of the CRRA utility function is given by: \[u^{\prime}(c)=c^{-\sigma}\]

the marginal rate of substitution (MRS) will be given by: \[\frac{u^{\prime}\left(c_{1}\right)}{u^{\prime}\left(c_{2}\right)}=\frac{c_{1}^{-\sigma}}{c_{2}^{-\sigma}}=\left(\frac{c_{2}}{c_{1}}\right)^{\sigma}.\]

Solving for \(c_{2} / c_{1}\), we get: \[\frac{c_{2}}{c_{1}}=\left(\frac{u^{\prime}\left(c_{1}\right)}{u^{\prime}\left(c_{2}\right)}\right)^{1 / \sigma}\]

Therefore, \(1 / \sigma\) is nothing but the elasticity of the ratio \(c_2/c_1\) with respect to the marginal rate of substitution. By definition, the elasticity of substitution \((\mu)\) is given by the inverse of the MRS \((\mu=1 / \sigma)\), which turns out to be constant in the CRRA utility function. \(\mu\) gives a measure of the strength of the substitution effect that a change in relative prices will produce. This is easy to spot because the first-order condition for the consumer equates the marginal rate of substitution to the price ratio. So,

\[\frac{c_{2}}{c_{1}}=\left(\frac{p_{1}}{p_{2}}\right)^{\mu} \tag{80}\]

The second major point we should highlight is that, according to eq. (80), when total utility is a sum of CRRA functions, the utility is additive, and each good/asset in the utility function behaves according to the CRRA type. The ratios of consumption across different goods (or different periods) depend only on their relative prices, not on income levels. This means that if there is an increase in real income, the consumption of all goods will go up exactly in the same proportion as income. In other words, all income elasticities are equal to one.

11 Exercises

In this section, we present a set of exercises that cover the main aspects of the RBC model, ranging from the crucial importance of intertemporal discounting to the accuracy of linearization, and we finish with changes in the model’s main structure.

11.1 Exercise 1

We considered that the RBC model incorporates a subjective discount rate for future utility, denoted by \(d\). The discount factor was defined as: \(\beta=1/(1+d)\). If we discount future utility at a rate of \(d=1\%\) per year, then \(\beta \approx 0.99\). If \(d=3\%\), \(\beta \approx 0.99\), and for \(d=5\%\) we will get \(\beta \approx 0.952\).

Suppose we have two friends who visit Lisbon from time to time (Helen and Judy). Helen values the current life and consumption exactly as she values them in the future, even in the far future. This means that Helen’s case will be \(d=0\) and \(\beta =1\). Judy, on the contrary, puts a lot of emphasis on her current life conditions and consumption, with a high discount rate of \(d=5\%\) per year on her future utility.

  • (a) They go to a famous café in Lisbon and ask for an expresso coffee and a “Pastel de Belém”. It is a nice combination that makes them feel good about life, and economists, giving an abstract representation of their joy of life, say that each one increased it by \(1\) util. Suppose they are considering the possibility of revisiting Lisbon in fifty years’ time, and they want to come back to the same place and consume exactly the same goods. What is the today’s utility value of that consumption bundle in fifty years’ time, for both friends?

  • (b) Abstracting from any other contingency factor that may affect their decisions, which friend will make a stronger case to consume those two goods in fifty years time? Explain.

  • (c) In the case of the RBC model, what is the impact of an increase in the subjective discount rate \(d\)?

11.2 Exercise 2

However strange it may seem, discounting the future utility may be a perfectly rational and logical attitude. The RBC model does not incorporate growth factors and, for this reason, it is not the best tool for explaining the full rationale of this process. However, it can still shed some light on this issue. Consider the Euler equation that we have been discussing in this document, given by: \[c_t^{-\sigma}=\beta \cdot c_{t+1}^{-\sigma} \cdot r_{t+1}\]

where \(r_{t+1}\) is defined as the net value of one unit of capital next period: \[r_{t+1} \equiv \alpha \cdot a_{t+1} k_{t+1}^{\alpha-1} \ell_{t+1}^{1-\alpha}+1-\delta=MP_k+1-\delta \tag{E1}\]

that is: the sum of the marginal productivity of capital \((MP_k)\) with \(1\), and subtracting the part of capital that is depreciated \((\delta)\). As we saw in Section 4, a steady-state to exist in this model requires that: \[\overline{r}=\frac{1}{\beta} \tag{E2}.\]

As, by definition, we have that \(\beta = 1/(1+d)\), we can easily obtain the following result in the steady state by combining (E1) and (E2): \[\overline{MP}_k-\delta = \overline{d} \tag{E3}\]

Let us apply the result in (E3) to the case of Judy above. Suppose that today Judy has € 87.21 in her pockets. She decides not to spend them and instead invests this amount by buying Nvidia stock, for example. This company will increase its capital stock by using Judy’s funds, and the value of that new capital will increase on average by 10% per year, with capital depreciating at 5% per year, over the next fifty years. Therefore, in fifty years, the value of Judy’s investment will be equal to \(r_{t+50}=87.21(1+0.1-0.5)^{50} = 1000.\)

(a) Considering this case, in your judgment, is the 5% subjective discount rate of future utility by Judy a rational economic decision? Explain.

(b) NVidia is currently a very special company with extremely above average profits due to the dramatic importance of its graphics cards. The average return on capital in an entire economy is certainly much lower than 10%. If so, is Judy’s choice of a discount rate a good picture of the representative household we are considering in this document? Explain.

11.3 Exercise 3

To test the accuracy of the linearization processes discussed here, try a simple exercise. Assume the rate of change of a variable \(v\) is \(g_v=0.02\), or 2%, and another variable \(w\) grows at a rate \(g_w=0.02\). These numbers are typical for real-world macroeconomic variables. Also, suppose another variable \(\mu\) behaves according to this function:

\[\mu_{t+1} = v_{t+1} \times w_{t+1} \tag {E4}\]

Question. What error do we make by using a linearized version of the function in (E1), compared to the actual function? (The solution is at the end of this section)

11.4 Exercise 4

Lets us test the accuracy of the linearization applied to a power function. Assume that the rate of change of a variable \(v\) is \(g_v =0.03\), that is \(3\%\), which is very well in accordance with the numbers seen in the real world of macroeconomics. Consider also that another variable \(x\) behaves according to this function: \[x_t = 4 v_t^2 \tag{E5}\]

What is the error we make by using a linearized version of the function in (E2), when compared to the actual function? (There is a solution at the end of this section)

11.5 Exercise 5

In the standard version of the RBC model discussed in this document, we assumed that the coefficient of relative risk aversion with respect to labor supply, \(\gamma\), is zero. This is a simplification used to render the derivation of the results easier. However, from a purely economic point of view, such an assumption does not make much sense, because the amount of hours we decide to offer during a period of time is not linear: we can not have the same marginal (dis)utility if we work one more hour per day, when we work 4 hours, or when we work 20 hours!

Therefore, in this exercise, we consider the case where \(\gamma>0\). The utility function that satisfies this condition is given by: \[u\left(c_t, \ell_t\right)=\frac{c_t^{1-\sigma}}{1-\sigma}-\theta \frac{\ell_t^{1+\gamma}}{1+\gamma} \quad, \quad\{\sigma, \gamma, \theta\} \geq 0\]

This specification of the utility function produces only one change in the entire model we simulated in this document so far, which is the optimal labor supply, given by (31) \[u'(\ell_t) = \frac{\partial u(c_t, \ell_t)}{\partial \ell_t} = -\theta \tag{30'}\]

The same optimal condition in this new version of the model will become: \[u'(\ell_t) = \frac{\partial u(c_t, \ell_t)}{\partial \ell_t} = -\theta \cdot \ell_t^\gamma\]

which implies that the new eq. (31) will come out as:

\[\frac{y_t}{\ell_t ^{1+\gamma}}=\left(\frac{\theta}{1-\alpha}\right) c_t^\sigma\]

The corresponding new linearized version of the previous equation will be as follows: \[(1+\gamma) \hat{\ell}_t \approx \hat{y}_t-\sigma \hat{c}_t\]

The only change in this version of the model is that the labor supply will react much less to changes in output and in consumption, because the \(\gamma\) is greater than zero.

  • (a) This is the only change to the model we discussed in this document. Create a new notebook to simulate this new version of the model and see what happens if, e.g., \(\gamma = 1.5\).

  • (b) Compare the main results of the model with the situation where \(\gamma = 0.\)

  • (c) Does this new specification make the labor supply more (our less) reactive to the business cycles? Make a cross-plot of the changes in the labor supply \(\hat{\ell}_t\) against changes in technology \(\hat{a}_t\) and against changes in output \((\hat{yc}_t)\) and check with current data that can be seen in ?@fig-tpf_2.

Figure 8: Output, total factor productivity, and labor supply

11.6 Exercise 6

The final exercise concerns another important point in the RBC model. Recall that in this model, there are no growth elements, which implies that there will be no growth in technology, in the total number of households in the economy, in the capital stock, or in real output. So, in such an environment, what will happen if, suddenly, there is a shock to the subjective discount rate, such that it becomes \(d=0.1\), leading to \(\beta = 0.9\).

  • (a) What will be the expected impact in the labor supply of such an increase in the discount rate?

  • (b) Use a Pluto notebook and simulate that impact.

11.7 Solutions to exercises

Exercise 3. By using the rule (R2), the linearization of \(\mu_{t+1} = v_{t+1} \times w_{t+1}\) will come out as: \[g_{\mu} = g_v + g_w = 0.02 + 0.04 = 0.06.\]

To calculate the true rate of change of \(\mu\), we can implement a simple exercise with growth rates, knowing that by definition \(\mu_{t+1} = (1+g_{\mu}) \mu_t\), which implies that: \[\frac{\mu_{t+1}}{\mu_t}=1+g_{\mu}\]

Therefore, by knowing that: \[\begin{aligned} & \mu_{t+1}=v_{t+1} \times w_{t+1} \\ & \mu_t=v_t \times w_t \\ \end{aligned}\]

dividing \(\mu_{t+1}\) by \(\mu_{t}\), leads to: \[\begin{aligned} & \underbrace{\left(\frac{\mu_{t+1}}{\mu_t}\right)}_{=1+g_{\mu}}=\frac{v_{t+1} \times w_{t+1}}{v_t \times w_t}=\frac{v_{t+1}}{v_t} \times \frac{w_{t+1}}{w_t}=\left(1+g_v\right)\left(1+g_w\right) \\ & 1+g_{\mu}=\left(1+g_v\right)\left(1+g_w\right)=1+g_v+g_w+g_v g_w \\ & g_{\mu}=g_v+g_w+g_v g_w \\ & g_{\mu}=0.02 + 0.04 + 0.02 \times 0.04 = 0.06 + 0.0008 \end{aligned}\]

Therefore, in the case of the linearization, we get \(g_{\mu}=0.06\), while in the case of the true nonlinear equation, we have \(g_x=0.06+0.0008\). So, the linearization error is only \(0.0008\), a figure that is hardly visible in national accounts, and we will not make any relevant mistakes if we stick to the linearization result.

Exercise 4. By using the rule (R3), the linearization of \(x_t = 4v_t^2\) will come out as: \[g_x = 2 g_v = 2 \times 0.03 = 0.06.\]

To calculate the true rate of change of \(x\), we can implement a simple exercise with growth rates, knowing that by definition \(x_{t+1} = (1+g_x)x_t\), which implies that: \[\frac{x_{t+1}}{x_t}=1+g_x\]

Dividing \(x_{t+1}\) by \(x_t\), and using the equation at the heart of this exercise \(x_t = 4v_t^2\), we can write: \[\begin{aligned} \underbrace{\left(\frac{x_{t+1}}{x_t}\right)}_{=1+g_x} & =\frac{4 v_{t+1}^2}{4 v_t^2}=\underbrace{\left(\frac{v_{t+1}}{v_t}\right)^2}_{=1+g_v} \\ 1+g_x & =\left(1+g_v\right)^2=1+2 g_v+g_v^2 \\ g_x & =2 g_v+g_v^2 \\ g_x & =2 \times 0.03+0.03^2 \\ g_x & =0.06+0.0006 \end{aligned}\]

Therefore, in the case of the linearization, we get \(g_x=0.06\), while in the case of the true nonlinear equation, we have \(g_x=0.06+0.0006\). So, the linearization error is only \(0.0006\), a very small number in terms of macroeconomic reality, and we will not make any relevant mistakes if we stick to the linearization result.

References

Arrow, Kenneth, Partha Dasgupta, Lawrence Goulder, Gretchen Daily, Paul Ehrlich, Geoffrey Heal, Simon Levin, et al. 2004. “Are We Consuming Too Much?” Journal of Economic Perspectives 18 (3): 147–72.
Blanchard, Olivier Jean, and Charles M Kahn. 1980. “The Solution of Linear Difference Models Under Rational Expectations.” Econometrica: Journal of the Econometric Society, 1305–11.
Blinder, Alan S. 1988. “The Fall and Rise of Keynesian Economics.” Economic Record 64 (4): 278–94.
Christiano, Lawrence J, and Martin Eichenbaum. 1992. “Current Real-Business-Cycle Theories and Aggregate Labor-Market Fluctuations.” The American Economic Review, 430–50.
Fernald, John. 2014. “A Quarterly, Utilization-Adjusted Series on Total Factor Productivity.” In. Federal Reserve Bank of San Francisco.
Friedman, Milton. 1968. “The Role of Monetary Policy.” The American Economic Review 58 (1): 1–17.
Hansen, G. D. 1985. “Indivisible Labor and the Business Cycle.” Journal of Monetary Economics 16 (3): 309–27.
Hansen, G. D., and R. Wright. 1992. “The Labor Market in Real Business Cycle Theory.” Federal Reserve Bank of Minneapolis, Quarterly Review 16, (2), Spring 1992, 168.
Hicks, John R. 1937. “Mr. Keynes and the" Classics"; a Suggested Interpretation.” Econometrica: Journal of the Econometric Society, 147–59.
Keynes, John Maynard. 1936. The General Theory of Employment, Interest, and Money. Springer.
Kydland, Finn E, and Edward C Prescott. 1982. “Time to Build and Aggregate Fluctuations.” Econometrica: Journal of the Econometric Society, 1345–70.
Lucas, Robert E. 1972. “Expectations and the Neutrality of Money.” Journal of Economic Theory 4 (2): 103–24.
———. 1995. “Understanding Business Cycles.” In Essential Readings in Economics, 306–27. Springer.
Mitman, Kurt. 2025. “Chapter 14: Real Business Cycles.” In Macroeconomics: A Comprehensive Textbook for First-Year Ph.d. Courses in Macroeconomics, edited by A. McKay M. Azzimonti P. Krusell and T. Mukoyama. https://phdmacrobook.org/.
Moler, Cleve. 1994. “Jordan’s Canonical Form Just Doesn’t Compute.” The MathWorks Newsletter 8: 8–9.
Moler, Cleve, and Charles Van Loan. 1978. “Nineteen Dubious Ways to Compute the Exponential of a Matrix.” SIAM Review 20 (4): 801–36.
———. 2003. “Nineteen Dubious Ways to Compute the Exponential of a Matrix, Twenty-Five Years Later.” SIAM Review 45 (1): 3–49.
Phelps, Edmund S. 1967. “Phillips Curves, Expectations of Inflation and Optimal Unemployment over Time.” Economica, 254–81.
Phillips, Alban W. 1958. “The Relation Between Unemployment and the Rate of Change of Money Wage Rates in the United Kingdom, 1861-1957.” Economica 25 (100): 283–99.
Sargent, Thomas J, David Fand, and Stephen Goldfeld. 1973. “Rational Expectations, the Real Rate of Interest, and the Natural Rate of Unemployment.” Brookings Papers on Economic Activity 1973 (2): 429–80.
U.S. Environmental Protection Agency. 2024. “Guidelines for Preparing Economic Analyses.” EPA-240-R-24-001. 3rd ed. U.S. Environmental Protection Agency, Office of Policy, National Center for Environmental Economics. https://www.epa.gov/economics.

Footnotes

  1. At the time of the writing of this document, Keynes’s book is by far the most cited book in modern times, with 60090 citations in Google Scholar, only superseded by classical books like “Das Kapital” by Karl Marx and “The Wealth of Nations” by Adam Smith↩︎

  2. see an appendix in Section 10 for details on the basic properties of such functions.↩︎

  3. There has been a huge theoretical controversy on the merits of this choice, not only from a purely economic point of view, but also from a moral or ethical perspective. Discounting the future at a positive rate may lead to abhorrent outcomes: over-exploitation of natural resources, less value placed on future human generations, among others. However, this controversy is beyond the scope of the current document. For an excellent discussion of this problem see Arrow et al. (2004) and U.S. Environmental Protection Agency (2024), in particular, its “Chapter 6 - Discounting Future Benefits and Costs”.↩︎

  4. Notice that when \(d=0\), we will get \(\beta=1\); which means that current consumption and future consumption have the same value for the consumer.↩︎

  5. Notice that in a long sequence of periods, it does not make sense (it is not rational) to save in the last period because the person will not be around at \(t+2\). We can deal with bequests she may decide to leave for her children, but this is an issue that we can not deal with properly here.↩︎

  6. Although some may argue that this parameter does not introduce such a great complexity to the model because it will only affect one equation in the entire model’s solution, this issue will be discussed in later sections.↩︎

  7. Notice that any aggregate variable at the level of the entire economy is the value of this variable in terms of per-household units multiplied by \(\overline{n}\). Therefore, the constant will cancel out across all the variables in the economy, and the government can reach the same results by considering only per-household units. However, this is valid only because we are assuming that there is no heterogeneity across households.↩︎

  8. Notice that the previously named “Macroeconomic constraint” can be disaggregated into three equations in the table below: NL4, NL3, and NL5. These three equations were used earlier to obtain the macroeconomic constraint itself.↩︎

  9. I advise you to follow the easy way, for obvious reasons. However, it is more common to find the hard way in the literature, and this is the reason we present it here as well.↩︎

  10. We will calculate this ratio in the following section.↩︎

  11. We could have used hats on top of the variables in the Julia code also — Julia allows that with large simplicity — but we decided to maintain the code as simple as possible.↩︎

  12. The static notebook is an HTML file, which can be opened just by clicking on that link or its icon, if saved somewhere on one’s computer.↩︎

  13. Notice that the natural logarithm of 1 is 0, but, e.g., its value for \(1.03\) is \(0.02955880224154443\).↩︎

  14. As all variables jump when a shock hits the economy, students are usually perplexed by the “jump” terminology, and for that reason I will not use it in this document↩︎

  15. When time allows we will add also the Schur and the QZ decompositions. ↩︎

  16. For a detailed treatment of the problems that may arise from computing the exponential of a matrix, see see Moler and Van Loan (1978) and Moler and Van Loan (2003).↩︎

  17. This result can be derived by using L’Hospital’s rule to solve the indeterminate limit of \(c^{1-1}/(1-1)=0/0\) in this case. Many pedagogic papers use this particular specification, the \(\ln c_t\), because it simplifies the exposition significantly.↩︎

  18. Notice that what we are going to describe here can be fully applied to the eq. (1) that we used across this entire document. The only difference is that, if we remove the \(-1\) constant, we cannot apply the particular case of \(\ln c_t\).↩︎